在android上调试react-native - com.facebook.react.devsupport.JSException:意外的令牌' *'

时间:2017-10-19 16:59:45

标签: react-native react-native-android

所以,首先......在iOS上运行没有问题。我在

  

"反应":" 16.0.0-beta.5",

     

"反应原生":" ^ 0.49.3",

在物理设备或模拟器上尝试反应本机run-android时出现以下错误。

我还尝试删除并重新安装节点模块,清除npm缓存,清理android构建。这些都没有解决这个问题。

如果我在错误中找到url,则会有一个JS页面。该应用程序还会锁定设备或模拟器。

其他信息:

adb是我的路径,我可以运行adb设备。

adb reverse tcp:8081 tcp:8081没有帮助

10-19 12:28:20.839: E/unknown:ReactNative(12782): Exception in native call from JS
10-19 12:28:20.839: E/unknown:ReactNative(12782): com.facebook.react.devsupport.JSException: Unexpected token '*' (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:112538)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at android.os.Handler.handleCallback(Handler.java:751)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at android.os.Handler.dispatchMessage(Handler.java:95)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at android.os.Looper.loop(Looper.java:154)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:194)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   at java.lang.Thread.run(Thread.java:761)
10-19 12:28:20.839: E/unknown:ReactNative(12782): Caused by: com.facebook.jni.CppException: Unexpected token '*' (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:112538)
10-19 12:28:20.839: E/unknown:ReactNative(12782):   ... 7 more
10-19 12:28:20.841: E/unknown:ReactNative(12782): Exception in native call
10-19 12:28:20.841: E/unknown:ReactNative(12782): java.lang.RuntimeException: Error calling AppRegistry.runApplication
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at android.os.Handler.handleCallback(Handler.java:751)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at android.os.Handler.dispatchMessage(Handler.java:95)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at android.os.Looper.loop(Looper.java:154)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:194)
10-19 12:28:20.841: E/unknown:ReactNative(12782):   at java.lang.Thread.run(Thread.java:761)
10-19 12:28:20.841: E/unknown:ReactNative(12782): Caused by: com.facebook.jni.CppException: Could not get BatchedBridge, make sure your bundle is packaged correctly
10-19 12:28:20.841: E/unknown:ReactNative(12782):   ... 7 more

3 个答案:

答案 0 :(得分:4)

经过大量调试后,我找到了这个问题的原因,我将在此处发布,以防其他任何人遇到它。

我的项目正在使用

  

指数运算符**

(我认为这是在ES6中引入的)。

正如我在我的问题中所说,在iOS上运行时,这不会导致任何问题。我还没有深入挖掘,但似乎在Android方面的反应原生代码库中肯定存在一个错误。也许是在Bable?我不是百分百肯定。

但我知道的是

  

从例如2 ** 3变为Math.pow(2,3)解决了这个问题   我

这个答案的更新:

我无法重现这一点,创造了一个全新的RN项目。我遇到此问题的项目已从RN 42升级,因此升级过程必定存在问题。

答案 1 :(得分:2)

更新: babel-preset-react-native(v5.0.0)现在支持取幂运算符。预设的package.json需要plugin-transform-exponentiation-operator

babel-preset-react-native支持取幂运算符只是时间问题,但就目前而言,您可以手动将babel-plugin-transform-exponentiation-operator添加到项目中。

yarn add babel-plugin-transform-exponentiation-operator --dev

然后在.babelrc文件中,确保您的plugins属性与此类似:

{
  "plugins": ["transform-exponentiation-operator"]
}

答案 2 :(得分:-1)

如果有人仍然遇到此错误,请尝试此

** operator breaks packager

这个解决方案适合我,我不知道是什么原因引起了我的错误。 我的反应版本是

  

“反应”:“16.0.0”

     

“react-native”:“0.50.4”

简而言之,

npm install babel-preset-react-native-stage-0

然后将此行添加到.babelrc

{
  "presets": ["react-native-stage-0"]
}

如果反应原生已经存在,那将是

{
  "presets": ["react-native", "react-native-stage-0"]
}