Nach dem Upgrade Reagieren india 0,18-0,22 für Android, habe ich begonnen, die folgende Fehlermeldung zu erhalten:Syntaxerror: Strenger Modus erlaubt keine Funktionsdeklarationen in einer lexikalisch verschachtelten Anweisung
Got JS Exception: SyntaxError: Strict mode does not allow function declarations in a lexically nested statement.
Es stürzt die App beim Start App, und es ist unmöglich, das Debuggen zu starten.
Wie this post vorgeschlagen, ich habe versucht, alles zu entfernen ‚use strict‘ sowohl manuell als auch Skript bauen:
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)));
});
Es gibt keine ‚use strict‘ mehr in dem generierten Code. Allerdings bekomme ich immer noch genau den gleichen Fehler. Ich verwende babel v5.8.3.
Jede Hilfe wird sehr geschätzt!
Hier ist meine 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"
}
}
Unterhalb der vollen Stack Trace des Fehlers ist:
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)
Und Sie haben keine Funktionsdeklarationen innerhalb von if/else oder für Blöcke? – azium
Ich teile den gleichen Backend-Code mit React JS, der 'Use strict' hat und funktioniert gut im Browser. Nur Problem beim Upgrade auf RN v0.22 für Android. –
Ich treffe dasselbe Problem und passiert in xmldom (dom.js Zeile 17). Wenn Sie bestätigen möchten, können Sie die Bundle-Datei herunterladen und Zeile 32356 überprüfen. –