Advertisement

Error: Unable to determine the current character, it is not a string, number, array, or object in...

阅读量:

题意

错误提示:无法确定当前字符的类型,在React Native开发中使用Android平台时发现该字符既不是字符串类型也不是数字类型、数组类型的或其他对象类型的实例。

该错误表明当前字符内容无法被识别为字符串、数字、数组或对象类型,在 React Native for Android 环境中

问题背景:

Each time I execute react-native run-android, ensuring the emulator is running, I encounter an issue. react-native run-ios functions perfectly without any problems.

每一次运行 react-native run-android 之前必须确保模拟器处于运行状态才会出现问题;而在执行 react-native run-ios 时则无需担心任何问题

复制代码
 Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081

    
 :ReactNative:Failed to parse React Native CLI configuration: groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object
    
  
    
 The current character read is 'E' with an int value of 69
    
 Unable to determine the current character, it is not a string, number, array, or object
    
 line number 1
    
 index number 0
    
 Error: Invalid attribute nameLine: 16Column: 18Char: .    at error (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:651:10)    at strictFail (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:677:7)    at SAXParser.write (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:1313:13)    at new XmlDocument (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/xmldoc/lib/xmldoc.js:261:15)    at readManifest (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/build/config/readManifest.js:38:10)    at Object.projectConfig (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/build/config/index.js:59:46)    at Object.get project [as project] (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/tools/config/index.js:114:50)    at /Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/commands/config/config.js:8:452    at Array.forEach (<anonymous>)    at _objectSpread (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/commands/config/config.js:8:392)
    
 ^
    
  
    
 FAILURE: Build failed with an exception.
    
  
    
 * Where:
    
 Script '/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/native_modules.gradle' line: 201
    
  
    
 * What went wrong:
    
 A problem occurred evaluating script.
    
 > Failed to parse React Native CLI configuration. Expected running 'npx --quiet --no-install react-native config' command from '/Users/yashatreya/Desktop/Realyze/Realyze' directory to output valid JSON, but it didn't. This may be caused by npx resolving to a legacy global react-native binary. Please make sure to uninstall any global 'react-native' binaries: 'npm uninstall -g react-native react-native-cli' and try again
    
   20. * Try:
    
 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
   23. * Get more help at https://help.gradle.org
    
   25. 

Based on the error message, I attempted to execute the command npm uninstall -g react-native react-native-cli but it failed to execute.

根据错误提示信息,请问您尝试运行 npm uninstall -g react-native react-native-cli 以进行卸载操作吗?但该命令未能成功完成。

Info about my environment:

关于我的环境的信息:

复制代码
 System:

    
     OS: macOS 10.15
    
     CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
    
     Memory: 29.68 MB / 8.00 GB
    
     Shell: 3.2.57 - /bin/bash
    
   Binaries:
    
     Node: 12.13.0 - /usr/local/bin/node
    
     Yarn: 1.19.1 - /usr/local/bin/yarn
    
     npm: 6.12.0 - /usr/local/bin/npm
    
     Watchman: 4.9.0 - /usr/local/bin/watchman
    
   SDKs:
    
     iOS SDK:
    
       Platforms: iOS 13.0, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
    
   IDEs:
    
     Android Studio: 3.5 AI-191.8026.42.35.5977832
    
     Xcode: 11.0/11A420a - /usr/bin/xcodebuild
    
   npmPackages:
    
     react: 16.9.0 => 16.9.0 
    
     react-native: ^0.61.4 => 0.61.4 
    
   npmGlobalPackages:
    
     react-native-cli: 2.0.1

android/app/build.gradle below:

复制代码
 apply plugin: "com.android.application"

    
  
    
 import com.android.build.OutputFile
    
 project.ext.react = [
    
     entryFile: "index.js",
    
     enableHermes: false,  // clean and rebuild if changing
    
 ]
    
  
    
 apply from: "../../node_modules/react-native/react.gradle"
    
  
    
 def enableSeparateBuildPerCPUArchitecture = false
    
 def enableProguardInReleaseBuilds = false
    
  
    
 def jscFlavor = 'org.webkit:android-jsc:+' 
    
  
    
 def enableHermes = project.ext.react.get("enableHermes", false);
    
  
    
 android {
    
     compileSdkVersion rootProject.ext.compileSdkVersion
    
  
    
     compileOptions {
    
     sourceCompatibility JavaVersion.VERSION_1_8
    
     targetCompatibility JavaVersion.VERSION_1_8
    
     }
    
  
    
     defaultConfig {
    
     applicationId "com.realyze"
    
     minSdkVersion 21 
    
     targetSdkVersion rootProject.ext.targetSdkVersion
    
     versionCode 1
    
     versionName "1.0"
    
     multiDexEnabled true
    
  
    
     }
    
     // rootProject.ext.minSdkVersion
    
     splits {
    
     abi {
    
         reset()
    
         enable enableSeparateBuildPerCPUArchitecture
    
         universalApk false  // If true, also generate a universal APK
    
         include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    
     }
    
     }
    
     signingConfigs {
    
     debug {
    
         storeFile file('debug.keystore')
    
         storePassword 'android'
    
         keyAlias 'androiddebugkey'
    
         keyPassword 'android'
    
     }
    
     }
    
     buildTypes {
    
     debug {
    
         signingConfig signingConfigs.debug
    
     }
    
     release {
    
         // Caution! In production, you need to generate your own keystore file.
    
         // see https://facebook.github.io/react-native/docs/signed-apk-android.
    
         signingConfig signingConfigs.debug
    
         minifyEnabled enableProguardInReleaseBuilds
    
         proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    
     }
    
     }
    
     // applicationVariants are e.g. debug, release
    
     applicationVariants.all { variant ->
    
     variant.outputs.each { output ->
    
         // For each separate APK per architecture, set a unique version code as described here:
    
         // https://developer.android.com/studio/build/configure-apk-splits.html
    
         def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
    
         def abi = output.getFilter(OutputFile.ABI)
    
         if (abi != null) {  // null for the universal-debug, universal-release variants
    
             output.versionCodeOverride =
    
                     versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
    
         }
    
  
    
     }
    
     }
    
 }
    
  
    
 dependencies {
    
     implementation project(':react-native-push-notification')
    
     implementation project(':react-native-sound')
    
     implementation project(':react-native-audio')
    
     implementation 'com.android.support:multidex:2.0.1'
    
     implementation project(':react-native-gesture-handler')
    
     implementation fileTree(dir: "libs", include: ["*.jar"])
    
     implementation "com.facebook.react:react-native:+"  // From node_modules
    
     implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    
     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
    
     implementation 'com.google.firebase:firebase-analytics:17.2.0'
    
     implementation 'com.google.firebase:firebase-auth:19.1.0'
    
     implementation project(path: ":@react-native-firebase_auth")
    
     implementation project(path: ":@react-native-firebase_messaging")
    
     implementation project(path: ":@react-native-firebase_database")
    
     implementation project(':react-native-datetimepicker')
    
     implementation project(path: ":@react-native-firebase_firestore")
    
     implementation project(path: ":@react-native-firebase_functions")
    
 }
    
  
    
     if (enableHermes) {
    
     def hermesPath = "../../node_modules/hermes-engine/android/";
    
     debugImplementation files(hermesPath + "hermes-debug.aar")
    
     releaseImplementation files(hermesPath + "hermes-release.aar")
    
     } else {
    
     implementation jscFlavor
    
     }
    
 // }
    
  
    
 // Run this once to be able to run the application with BUCK
    
 // puts all compile dependencies into folder libs for BUCK to use
    
 task copyDownloadableDepsToLibs(type: Copy) {
    
     from configurations.compile
    
     into 'libs'
    
 }
    
  
    
 apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
    
 apply plugin: 'com.google.gms.google-services'

android/build.gradle below :

复制代码
  
    
 buildscript {
    
     ext {
    
     buildToolsVersion = "28.0.3"
    
     minSdkVersion = 16
    
     compileSdkVersion = 28
    
     targetSdkVersion = 28
    
     }
    
     repositories {
    
     google()
    
     jcenter()
    
     }
    
     dependencies {
    
     classpath "com.android.tools.build:gradle:3.4.2"
    
     classpath 'com.google.gms:google-services:4.3.2'
    
     }
    
 }
    
  
    
 allprojects {
    
     repositories {
    
     mavenLocal()
    
     maven {
    
         // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
    
         url("$rootDir/../node_modules/react-native/android")
    
     }
    
     maven {
    
         // Android JSC is installed from npm
    
         url("$rootDir/../node_modules/jsc-android/dist")
    
     }
    
  
    
     google()
    
     jcenter()
    
     maven { url 'https://jitpack.io' }
    
     }
    
 }

At first, I was experiencing an issue with my React Native application. The specific error encountered was a build-time problem related to the JSC flavor implementation within Gradle's API, as detailed in a Stack Overflow post.

但现在我遇到了上面的错误。

问题解决:

SOLUTION 1 (worked for me) 解决方案1 (对我有效)

The solution for me was removing the following line

对我来说,解决方案是删除以下这一行:

复制代码
    apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

Make sure it is deleted everywhere. This line exists within both the build.gradle (app) and settings.gradle files.

彻底清除它在各个位置的可能性。该工程的build.gradle (app)和`settings.gradle$文件中均包含此条目。

After that, re-run npx react-native run-android. The console will display out the real error, solve it, and put back all the code lines you removed.

随后, 再次运行 npx react-native run-android , 控制台会输出真实的错误信息. 修复这些错误后, 请把被你删除的那行内容放回.

In my situation, the error occurred due to using an older Node version. On the second occasion, syncing my project became necessary.

基于当前情境中出现问题的原因是由于我采用了早期版本的 Node。在问题再次出现时必须重新同步项目的状态。


SOLUTION 2 解决文案2

Remove the files when it encountered an error message such as 'The current character read is ''E'' with an int value of 69’

请清除它在错误发生时获取到的文件,并查看以下错误提示:当前读取到的字符是'E'字符对应的ASCII值为69

Deleting

复制代码
    app\build\intermediates\signing_config\debug\out\signing-config.json

worked for others too. 对其他人也有效。


SOLUTION 3 解决文案3

Upgrade or update the @react-native-communit cli to the most recent release.

将 @react-native-community/cli 更新到最新版本。

Good coding!

编程愉快!

全部评论 (0)

还没有任何评论哟~