在生产模式下执行ionic 2 Android应用程序时出错,找不到模块ngfactory

问题描述 投票:0回答:2

使用--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文件?

任何帮助都应该得到赞赏,因为这是将一个很棒且非常完整的应用程序投入生产的最新步骤,以减少开始时的加载时间。 在此先感谢您的宝贵帮助。

问候

android cordova angular typescript ionic2
2个回答
0
投票

删除package.json中“ typescript ”和“ @ionic/app-scripts ”软件包之前的“ ^ ”符号。 它应如下所示:

"typescript": "2.0.9",
"@ionic/app-scripts": "1.2.2"

运行npm install然后重试。


0
投票

我们发现了问题。 仅做几件事就解决了:

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进行了开发,我们对结果感到非常满意。

希望这篇文章能对某人有所帮助

祝你有美好的一天!

© www.soinside.com 2019 - 2024. All rights reserved.