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

Cin*_*tti 5 android android-studio react-native android-studio-3.0

我创建了一个应用程序并插入了一个代码,当我构建应用程序时出现此错误:

脚本 “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
Run Code Online (Sandbox Code Playgroud)

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"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

V P*_*V P 2

构建过程执行:

npx --quiet react-native 配置或 npx.cmd --quiet react-native 配置

如果您在项目的根目录中执行该命令,将生成 JSON 输出(如果一切配置正确)。

然后,JSON 输出在您引用的 gradle 脚本中进行解析。当配置不正确时, npx --quiet react-native config 将不会产生任何内容或无效输出。因此,JSON 解析(第 191 行)将失败。

调用“npx --quiet react-native config”的整个机制在最新版本的react-native中使用,因此它会自动将package.json中的所有react Native包“绑定”到您的Android中java应用程序。(它基本上是在应用程序的编译时注入所有这些包名称)。

--

不幸的是,没有一个“解决方法”可以帮助您解决此问题。您可能存在不匹配(或配置不正确)

  • 应用程序/build.gradle
  • 设置.gradle
  • 构建.gradle
  • package.json 中 @react-native/community/cli 的版本
  • 与特定版本的 Community-cli 配合使用的 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}");
Run Code Online (Sandbox Code Playgroud)

某处,在初始化reactNativeConfigOutput字符串变量的语句之后。

此日志语句将打印出该命令以及由该自动链接机器执行的该命令的输出。

因此,当您运行 gradlew build 时,
您应该会看到一些输出。

就我而言,命令(cmd)是:

npx.cmd --quiet react-native config
Run Code Online (Sandbox Code Playgroud)

和reactNativeConfigOutput是:

 info Run "react-native --help" to see a list of all available commands
Run Code Online (Sandbox Code Playgroud)

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