Android上的React Native:无法确定当前字符,它不是字符串,数字,数组或对象

xienkqul  于 2023-04-18  发布在  Android
关注(0)|答案(7)|浏览(172)

我创建了一个新的应用程序,并插入了一个旧的代码,当我构建应用程序时,出现了这个错误:
脚本**'C:\Users\nameuser\Desktop\nameapp\node_modules@react-native-community\cli-platform-android\native_modules.gradle'行:191
出了什么问题:
评估设置“*nameapp *”时出现问题。
无法确定当前字符,它不是字符串,数字,数组或对象
当前读取的字符是'i',int值为105
无法确定当前字符,它不是字符串,数字,数组或对象
第1行
索引号0
info运行“react-native --help”以查看所有可用命令的列表。
通过
react-native info**命令,我得到了当前的情况:

info
  React Native Environment Info:
    System:
      OS: Windows 10
      CPU: (8) x64 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
      Memory: 6.46 GB / 15.85 GB
    Binaries:
      Yarn: 1.15.2 - C:\laragon\bin\nodejs\node-v11\yarn.CMD
      npm: 6.12.0 - C:\Program Files\nodejs\npm.CMD
    IDEs:
      Android Studio: Version  3.5.0.0 AI-191.8026.42.35.5900203

而在package.json上:

{
  "name": "nameapp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@react-native-community/cli-platform-android": "^2.9.0",
    "axios": "^0.18.0",
    "haversine": "^1.1.0",
    "moment": "^2.22.2",
    "react": "16.6.3",
    "react-native": "^0.59.8",
    "react-native-actionsheet": "^2.4.2",
    "react-native-auto-height-image": "^1.1.0",
    "react-native-cached-image": "^1.4.3",
    "react-native-cli": "^2.0.1",
    "react-native-fbsdk": "^0.8.0",
    "react-native-global-font": "^1.0.2",
    "react-native-google-places": "^3.0.5",
    "react-native-image-crop-picker": "^0.24.1",
    "react-native-image-pan-zoom": "^2.1.10",
    "react-native-image-placeholder": "^1.0.14",
    "react-native-iphone-x-helper": "^1.2.0",
    "react-native-keyboard-manager": "^4.0.13-10",
    "react-native-maps": "github:react-community/react-native-maps",
    "react-native-maps-super-cluster": "^1.4.1",
    "react-native-modal-datetime-picker": "^5.1.0",
    "react-native-open-maps": "^0.3.3",
    "react-native-progress": "^3.4.0",
    "react-native-push-notification": "^3.1.2",
    "react-native-router-flux": "^4.0.6",
    "react-native-share": "^1.2.1",
    "react-native-snap-carousel": "^3.7.4",
    "react-native-swiper": "^1.5.13",
    "react-native-vector-icons": "^4.6.0",
    "react-native-view-shot": "^2.5.0",
    "react-redux": "^5.0.7",
    "redux": "^3.7.2",
    "redux-persist": "^4.10.1",
    "redux-persist-transform-filter": "0.0.15",
    "redux-thunk": "^2.2.0"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "0.51.1",
    "react-test-renderer": "16.6.3"
  },
  "jest": {
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "./src/fonts"
    ]
  }
}

谢谢你的帮助

mqxuamgl

mqxuamgl1#

我不得不删除app\build\intermediates\signing_config\debug\out\signing-config.json,现在它工作了。
参考:https://gitmemory.com/issue/facebook/react-native/25936/517993846

mnowg1ta

mnowg1ta2#

构建过程执行:
npx --quiet react-native config或npx.cmd --quiet react-native config
如果在项目的根目录中执行该命令,将生成JSON输出(如果一切都配置正确)。
然后,JSON输出在您引用的gradle脚本中解析。当配置不正确时,npx --quiet react-native config将不会生成任何内容,或者输出无效。因此,JSON解析(第191行)将失败。
调用'npx --quiet react-native config'的整个机制在最新版本的react-native中使用,因此它会自动'绑定'您在package.json中拥有的所有react native包到您的Android java应用程序中。

不幸的是,没有一个“变通办法”可以帮助您解决这个问题。您可能有一个missmatch(或不正确的配置)

  • app/build.gradle
  • settings.gradle
  • build.gradle
  • package.json中的@react-native/community/cli版本
  • 与特定版本的community-cli配合使用的react-native版本
  • react-native.config.js

在这一点上,我能推荐的最好的事情是升级到你能负担得起的任何最新的React版本,然后使用
https://github.com/react-native-community/rn-diff-purge
要弄清楚所有的变化,你需要使上述配置文件之间的版本,它的工作,和版本的RN,它停止工作。
如果全部失败,尝试调试native_modules. gradle。转到那里,并插入:

this.logger.warn("cmd: ${command}, result: ${reactNativeConfigOutput}");

在初始化reactNativeConfigOutput字符串变量的语句之后。
这个log语句将打印出这个自动链接机器执行的命令和命令的输出。
所以当你运行gradlew build
您应该会看到一些输出。
在我的例子中,命令(cmd)是:

npx.cmd --quiet react-native config

reactNativeConfigOutput是:

info Run "react-native --help" to see a list of all available commands

你可以看到输出是not一个有效的json,第一个字符是'i',JSON输出解析(在native_modules.gradle中使用)抛出了一个错误,抱怨'i'不是一个有效的字符

68bkxrlz

68bkxrlz3#

我花了一段时间在这上面。我最终只是删除了以下2个文件,清理和重建。

app\build\intermediates\signing_config\debug\out\signing-config.json
app\build\intermediates\signing_config\release\out\signing-config.json
wrrgggsh

wrrgggsh4#

问题是react-native-community@^2.0.0只与react-native@^0.59.0兼容。
您必须升级react-native或降级react-native-community

9ceoxa92

9ceoxa925#

我在从GitHub转储代码后遇到了类似的问题。我发现android/app/src/AndroidManifest.xml文件中存在合并冲突。
因此,每当我试图重建Android应用程序时,都会出现一些奇怪的新字符的解析错误。

x7yiwoj4

x7yiwoj46#

在我的例子中,当我删除react-native-firebase包时,这个问题就出现了。我从react-native-config.js中删除了依赖项,所以如果在删除包时发生这种情况,请确保从文件夹中删除与此包相关的所有内容

wz1wpwve

wz1wpwve7#

在我的情况下,在Android Studio中升级等级插件后,我注意到AndroidManifest.xml中的包被删除了。把它放回去解决了它。
升级前:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  package="com.example">

升级后:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

只需在升级版本中添加软件包名称:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example">

相关问题