Shi*_*y G 3 javascript android react-native
从React Native 0.18升级到0.22 for Android后,我开始收到以下错误:
Got JS Exception: SyntaxError: Strict mode does not allow function declarations in a lexically nested statement.
Run Code Online (Sandbox Code Playgroud)
它在启动应用程序时崩溃了应用程序,无法启动调试.
正如本文所述,我试图手动删除所有'use strict'以及使用构建脚本:
gulp.task('transform-android', function() {
return gulp.src(config.tasks.androidjs.src)
.pipe(envify({NATIVE: true}))
.pipe(babel({
"stage": 0,
blacklist: ["useStrict"]
}))
.pipe(gulp.dest(path.join(config.root.dest, config.tasks.androidjs.dest)));
});
Run Code Online (Sandbox Code Playgroud)
生成的代码中不再存在"use strict".但是,我仍然得到完全相同的错误.我正在使用babel v5.8.3.
任何帮助都非常感谢!
这是我的package.json
{
"name": "xodo",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node_modules/react-native/packager/packager.sh"
},
"author": "",
"license": "ISC",
"dependencies": {
"events": "^1.1.0",
"firebase": "^2.3.1",
"flux": "^2.0.1",
"immutable": "3.7.3",
"jwt-decode": "^1.4.0",
"linkifyjs": "^2.0.0-beta.7",
"lodash": "^3.10.1",
"promise-queue": "^2.2.3",
"react": "^0.14.7",
"react-immutable-proptypes": "^1.5.1",
"react-native": "^0.22.2",
"react-native-invertible-scroll-view": "^0.2.0",
"reqwest": "^1.1.5",
"rsvp": "^3.0.18",
"unbounce": "^0.1.0",
"xmldom": "^0.1.22"
},
"devDependencies": {
"babel": "^5.8.3",
"del": "^2.2.0",
"gulp": "^3.9.0",
"gulp-babel": "^5.3.0",
"gulp-envify": "^1.0.0",
"gulp-less2js": "0.0.3",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.4",
"gulp-sequence": "^0.4.0",
"path": "^0.12.7"
}
}
Run Code Online (Sandbox Code Playgroud)
下面是错误的完整堆栈跟踪:
Got JS Exception: SyntaxError: Strict mode does not allow function declarations in a lexically nested statement.
03-29 15:15:01.567 2047-2109/com.xodo.pdf.reader E/unknown:React: Exception in native call from JS
com.facebook.react.bridge.JSExecutionException: SyntaxError: Strict mode does not allow function declarations in a lexically nested statement. (http://10.0.3.2:8081/index.android.bundle?platform=android&dev=true&hot=false:32356)
at com.facebook.react.bridge.ReactBridge.loadScriptFromFile(Native Method)
at com.facebook.react.bridge.JSBundleLoader$2.loadScript(JSBundleLoader.java:58)
at com.facebook.react.bridge.CatalystInstanceImpl$2.call(CatalystInstanceImpl.java:146)
at com.facebook.react.bridge.CatalystInstanceImpl$2.call(CatalystInstanceImpl.java:137)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$1.run(MessageQueueThreadImpl.java:73)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
at android.os.Looper.loop(Looper.java:148)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:184)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
问题出现在其中一个核心文件中.pull request是为react-native创建的,但您可以自己进行更改以作为变通方法
open node_modules\react-native\Libraries\Core\InitializeCore.js第112行
将函数handleError(e,isFatal)更改为var handleError = function(e,isFatal)
然后做npm start - --reset-cache
您可以在https://github.com/facebook/react-native/issues/11389找到更多信息
| 归档时间: |
|
| 查看次数: |
7791 次 |
| 最近记录: |