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

问题描述:

因此,首先...在iOS上运行没有问题。我对在android上调试react-native - com.facebook.react.devsupport.JSException:意外的标记'*'

“反应”: “16.0.0-beta.5”,

“反应原生”: “^ 0.49.3”,

我得到以下尝试在物理设备或模拟器上反应原生run-android时出错。

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

如果我去了错误中的url有一个JS页面。该应用程序还会锁定设备或仿真器。

其他信息:

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

亚行反向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 

这么多的调试之后,我发现这个问题的原因,并柜面其他人跑进它,我会在这里发布。

我的项目是使用

幂运算符**

(我认为这是在ES6介绍)。

正如我在我的问题中所说的,这在iOS上运行时不会导致任何问题。我还没有深入挖掘,但似乎在Android的反应本机代码库中必定存在一个错误。也许它在Bable?我不是100%确定的。

我所知道的不过是

改变从,例如,2 ** 3 Math.pow(2,3)解决了这个对我 。

更新这个答案:

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

如果有人仍然得到这个错误,试试这个

** operator breaks packager

该解决方案修复对我来说,我不知道是什么引起,虽然我的错误。 我反应过来的版本是

“反应”: “16.0.0”

“反应原生”:“0.50。4"

总之,

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

然后添加下面.babelrc

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

如果反应本土已经存在这条线这将是

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