使用--prod标志执行和ionic2应用程序时出现此错误
启动屏幕加载后,屏幕变白。
我们启动的命令是:
离子运行android --prod
我们正在使用设备进行部署,即Nexus 5x(与模拟器的行为相同)
离子信息:
apache cordova 6.4.0
Ionic Framework Version: 2.1.0
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.2.0
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 7
Node Version: v6.5.0
Xcode version: Not installed
Cordova插件:
这些是我们对package.json的依赖:
"dependencies": {
"@angular/common": "2.1.1",
"@angular/compiler": "2.1.1",
"@angular/compiler-cli": "2.1.1",
"@angular/core": "2.1.1",
"@angular/forms": "2.1.1",
"@angular/http": "2.1.1",
"@angular/platform-browser": "2.1.1",
"@angular/platform-browser-dynamic": "2.1.1",
"@angular/platform-server": "2.1.1",
"@ionic/storage": "1.1.6",
"angular2-google-maps": "0.16.0",
"ionic-angular": "2.1.0",
"ionic-native": "2.5.1",
"ionicons": "3.0.0",
"localforage": "1.4.3",
"localforage-cordovasqlitedriver": "1.5.0",
"rxjs": "5.0.0-beta.12",
"saml2-js": "1.11.0",
"tslint": "4.0.0",
"zone.js": "0.6.26"
}
和我们的devDependencies:
"devDependencies": {
"@ionic/app-scripts": "^1.2.2",
"@types/jasmine": "2.5.38",
"@types/node": "7.0.4",
"angular-cli": "1.0.0-beta.21",
"codelyzer": "2.0.0-beta.1",
"electron": "1.4.12",
"electron-builder": "11.2.3",
"electron-packager": "8.5.0",
"jasmine-core": "2.5.2",
"karma": "1.3.0",
"karma-chrome-launcher": "2.0.0",
"karma-cli": "1.0.1",
"karma-jasmine": "1.0.2",
"karma-mocha-reporter": "2.2.1",
"karma-remap-istanbul": "0.2.1",
"sw-toolbox": "3.5.1",
"typescript": "^2.0.9"
}
tsconfig.json内容:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es6"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"baseUrl": ".",
"paths": {
"@app/*": [ "src/*" ]
},
"types": [ "node" ]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
如您所见,我们已经将ionic-script更新为最新版本,只是为了检查问题是否已解决,但是没有运气。
使用相同的堆栈和@ ionic / app-scripts的1.2.0版本,似乎生成了ngfactory文件,但是我们还有另一个错误(在运行时):
放大:
我们在github上看到了一个与此错误有关的问题,但该错误已修复,建议更新至1.2.1版本,并再次出现“找不到模块..ngfactory”错误。
https://forum.ionicframework.com/t/error-after-updating-app-scripts-to-1-2-0/84207
https://github.com/driftyco/ionic-app-scripts/issues/836
为何不使用这些版本在捆绑包内生成ngfactory文件?
任何帮助都应该得到赞赏,因为这是将一个很棒且非常完整的应用程序投入生产的最新步骤,以减少开始时的加载时间。 在此先感谢您的宝贵帮助。
问候
删除package.json中“ typescript
”和“ @ionic/app-scripts
”软件包之前的“ ^
”符号。 它应如下所示:
"typescript": "2.0.9",
"@ionic/app-scripts": "1.2.2"
运行npm install
然后重试。
我们发现了问题。 仅做几件事就解决了:
1)使用以下依赖项更新package.json:
"dependencies": {
"@angular/common": "2.4.8",
"@angular/compiler": "2.4.8",
"@angular/compiler-cli": "2.4.8",
"@angular/core": "2.4.8",
"@angular/forms": "2.4.8",
"@angular/http": "2.4.8",
"@angular/platform-browser": "2.4.8",
"@angular/platform-browser-dynamic": "2.4.8",
"@angular/platform-server": "2.4.8",
"@ionic/storage": "1.1.6",
"ionic-angular": "2.3.0",
"ionic-native": "2.5.1",
"ionicons": "3.0.0",
"localforage": "1.4.3",
"localforage-cordovasqlitedriver": "1.5.0",
"angular2-google-maps": "0.16.0",
"saml2-js": "1.11.0",
"rxjs": "5.0.1",
"sw-toolbox": "3.4.0",
"zone.js": "0.7.2"
},
"devDependencies": {
"@ionic/app-scripts": "1.2.2",
"typescript": "2.0.9",
"tslint": "4.0.0"
},
2)删除package.json上的此配置:
"config": {
"ionic_bundler": "webpack",
"ionic_source_map_type": "#inline-source-map"
}
ionic 2默认情况下使用webpack,因此是多余的。 唯一的问题是删除此行:
"ionic_source_map_type": "#inline-source-map"
我们无法直接在浏览器上使用Typescript进行调试,但会根据环境生成不同的配置。
好消息是,我们的应用程序仅需3秒(而不是12秒)即可在Android Nexus 5X上运行,因此javascript捆绑包从14Mb减少至2Mb,所以值得! 感谢ionic 2团队提供的出色框架和出色脚本。 该应用程序在中型移动设备上的性能非常好,因此对我们来说它接近于本机,并且仅在3个月内针对ios(尚未测试)和android进行了开发,我们对结果感到非常满意。
希望这篇文章能对某人有所帮助
祝你有美好的一天!