我们有一个Nativescript Angular应用程序,该应用程序已经几个月没有更新,并且已经迁移到NativeScript6。
运行tns run android
时,apk正在构建并发送到设备,但在命令行界面却出现黑屏错误和以下内容:
System.err: An uncaught Exception occurred on "main" thread.
System.err: Unable to start activity ComponentInfo{org.nativescript.MyApp/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err:
System.err: StackTrace:
System.err: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.nativescript.MyApp/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0)
System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
System.err: at android.os.Looper.loop(Looper.java:164)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6944)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
System.err: Caused by: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1242)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1122)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1109)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1089)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1081)
System.err: at com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:19)
System.err: at android.app.Activity.performCreate(Activity.java:7183)
System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
System.err: ... 9 more
这是package.json:
{
"description": "NativeScript Application",
"license": "SEE LICENSE IN <your-license-filename>",
"readme": "NativeScript Application",
"repository": "<fill-your-repository-here>",
"nativescript": {
"id": "org.nativescript.MyApp",
"tns-android": {
"version": "6.2.0"
}
},
"scripts": {
"lint": "tslint \"app/**/*.ts\""
},
"dependencies": {
"@angular/animations": "8.0.0",
"@angular/common": "8.0.0",
"@angular/compiler": "8.0.0",
"@angular/core": "8.0.0",
"@angular/forms": "8.0.0",
"@angular/http": "8.0.0-beta.10",
"@angular/platform-browser": "8.0.0",
"@angular/platform-browser-dynamic": "8.0.0",
"@angular/router": "8.0.0",
"nativescript-angular": "8.0.2",
"nativescript-camera": "^4.0.2",
"nativescript-drop-down": "^4.0.1",
"nativescript-imagepicker": "^6.0.4",
"nativescript-modal-datetimepicker": "^1.1.4",
"nativescript-theme-core": "~1.0.4",
"nativescript-toast": "^2.0.0",
"nativescript-ui-listview": "7.0.0",
"reflect-metadata": "~0.1.10",
"rxjs": "~6.4.0",
"tns-core-modules": "6.0.1",
"zone.js": "0.9.1"
},
"devDependencies": {
"@angular-devkit/core": "~7.3.0",
"@angular/compiler-cli": "8.0.0",
"@ngtools/webpack": "8.0.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"clean-webpack-plugin": "~1.0.1",
"codelyzer": "~4.5.0",
"copy-webpack-plugin": "~4.6.0",
"css-loader": "~2.1.0",
"extract-text-webpack-plugin": "~3.0.2",
"lazy": "1.0.11",
"nativescript-dev-webpack": "1.0.1",
"nativescript-worker-loader": "~0.9.0",
"raw-loader": "~1.0.0",
"resolve-url-loader": "~3.0.0",
"sass-loader": "~7.1.0",
"tslint": "~5.12.1",
"typescript": "3.4.5",
"uglifyjs-webpack-plugin": "~2.1.1",
"webpack": "~4.29.1",
"webpack-bundle-analyzer": "~3.0.3",
"webpack-cli": "~3.2.3",
"webpack-sources": "~1.3.0",
"node-sass": "4.12.0"
}
}
这些依赖项很旧,因此请尝试以下操作来更新所有内容(备份原始package.json):
ncu -u
它执行以下操作:
@angular/animations 8.0.0 → 8.2.14
@angular/common 8.0.0 → 8.2.14
@angular/compiler 8.0.0 → 8.2.14
@angular/core 8.0.0 → 8.2.14
@angular/forms 8.0.0 → 8.2.14
@angular/platform-browser 8.0.0 → 8.2.14
@angular/platform-browser-dynamic 8.0.0 → 8.2.14
@angular/router 8.0.0 → 8.2.14
nativescript-angular 8.0.2 → 8.20.3
nativescript-drop-down ^4.0.1 → ^5.0.4
nativescript-imagepicker ^6.0.4 → ^7.1.0
nativescript-theme-core ~1.0.4 → ~2.0.24
nativescript-ui-listview 7.0.0 → 8.0.1
rxjs ~6.4.0 → ~6.5.3
tns-core-modules 6.0.1 → 6.2.3
zone.js 0.9.1 → 0.10.2
@angular-devkit/core ~7.3.0 → ~8.3.20
@angular/compiler-cli 8.0.0 → 8.2.14
@ngtools/webpack 8.0.0 → 8.3.20
clean-webpack-plugin ~1.0.1 → ~3.0.0
codelyzer ~4.5.0 → ~5.2.0
copy-webpack-plugin ~4.6.0 → ~5.0.5
css-loader ~2.1.0 → ~3.2.0
nativescript-dev-webpack 1.0.1 → 1.3.0
nativescript-worker-loader ~0.9.0 → ~0.10.0
raw-loader ~1.0.0 → ~4.0.0
resolve-url-loader ~3.0.0 → ~3.1.1
sass-loader ~7.1.0 → ~8.0.0
tslint ~5.12.1 → ~5.20.1
typescript 3.4.5 → 3.7.2
uglifyjs-webpack-plugin ~2.1.1 → ~2.2.0
webpack ~4.29.1 → ~4.41.2
webpack-bundle-analyzer ~3.0.3 → ~3.6.0
webpack-cli ~3.2.3 → ~3.3.10
webpack-sources ~1.3.0 → ~1.4.3
node-sass 4.12.0 → 4.13.0
然后做了tns run android
,这是输出:
Preparing project...
File change detected. Starting incremental webpack compilation...
webpack is watching the files…
Hash: 20eb6148e8a0814b11eb
Version: webpack 4.29.6
Time: 6917ms
Built at: 11/29/2019 17:08:03
Asset Size Chunks Chunk Names
bundle.js 73.1 KiB bundle [emitted] bundle
fonts/FontAwesome.ttf 176 KiB [emitted]
fonts/FontAwesome2 (2).ttf 39.4 KiB [emitted]
fonts/FontAwesome2.ttf 176 KiB [emitted]
fonts/FontAwesomem.ttf 162 KiB [emitted]
images/add.png 214 bytes [emitted]
images/background.jpg 251 KiB [emitted]
images/delete.png 409 bytes [emitted]
images/fe_icon.png 2.49 KiB [emitted]
images/logo.png 79.9 KiB [emitted]
images/logout27x27.png 205 bytes [emitted]
images/logout36x36.png 226 bytes [emitted]
images/no_receipt.jpg 3.36 KiB [emitted]
images/no_receipt.png 1.87 KiB [emitted]
images/pdf.jpg 5.81 KiB [emitted]
images/test.jpg 302 KiB [emitted]
package.json 182 bytes [emitted]
runtime.js 71.4 KiB runtime [emitted] runtime
tns-java-classes.js 0 bytes [emitted]
vendor.js 3.54 MiB vendor [emitted] vendor
Entrypoint bundle = runtime.js vendor.js bundle.js
[./app.scss] 23.2 KiB {bundle} [built]
[./main.ts] 1.17 KiB {bundle} [built]
[./package.json] 166 bytes {bundle} [optional] [built]
+ 171 hidden modules
ERROR in ./app.scss
Module not found: Error: Can't resolve './nativescript-theme-core/css/core.light.css' in 'c:\Users\JoeSmith\apps\MyApp\app'
@ ./app.scss 3:10-116
@ ../node_modules/nativescript-dev-webpack/load-application-css-angular.js
@ ./main.ts
ERROR in app/modal-datepicker/modal-datepicker.component.ts(16,6): error TS2554: Expected 2 arguments, but got 1.
app/shared/status-bar-util.ts(18,19): error TS2339: Property 'getter' does not exist on type 'typeof ios'.
Webpack compilation complete. Watching for file changes.
Webpack build done!
Project successfully prepared (android)
Building project...
Gradle build...
+ setting applicationId
+ applying user-defined configuration from C:\Users\JoeSmith\apps\MyApp\app\App_Resources\Android\app.gradle
Applying settings from C:\Users\JoeSmith\apps\MyApp\app\App_Resources\Android\settings.json
+ using andorid X library androidx.legacy:legacy-support-v4:1.0.0
+ adding nativescript runtime package dependency: nativescript-optimized-with-inspector
+ adding aar plugin dependency: C:\Users\JoeSmith\apps\MyApp\node_modules\nativescript-camera\platforms\android\nativescript_camera.aar
+ adding aar plugin dependency: C:\Users\JoeSmith\apps\MyApp\node_modules\nativescript-ui-listview\platforms\android\TNSListView-release.aar
+ adding aar plugin dependency: C:\Users\JoeSmith\apps\MyApp\node_modules\nativescript-ui-core\platforms\android\TNSCore-release.aar
+ adding aar plugin dependency: C:\Users\JoeSmith\apps\MyApp\node_modules\tns-core-modules-widgets\platforms\android\widgets-release.aar
Project successfully built.
The build result is located at: c:\Users\JoeSmith\apps\MyApp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
Installing on device 520031d8ee2715d9...
Successfully installed on device with identifier '520031d8ee2715d9'.
Restarting application on device 520031d8ee2715d9...
Successfully synced application org.nativescript.MyApp on device 520031d8ee2715d9.
JS: HMR: Hot Module Replacement Enabled. Waiting for signal.
System.err: An uncaught Exception occurred on "main" thread.
System.err: Unable to start activity ComponentInfo{org.nativescript.MyApp/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err:
System.err: StackTrace:
System.err: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.nativescript.MyApp/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
System.err: at android.app.ActivityThread.-wrap11(Unknown Source:0)
System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
System.err: at android.os.Looper.loop(Looper.java:164)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6944)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
System.err: Caused by: com.tns.NativeScriptException: Calling js method onCreate failed
System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1242)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1122)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1109)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1089)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1081)
System.err: at com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:19)
System.err: at android.app.Activity.performCreate(Activity.java:7183)
System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
System.err: ... 9 more
这仍然存在System.err: Error: Main entry is missing. App cannot be started. Verify app bootstrap.
我在GitHub上了解到Webpack编译错误可能会导致这种情况,但我不知道如何解决。
有什么想法吗?谢谢。