Ionic 5 Angular 11 Cordova build prod - 随机运行时错误:所述方法不是函数

我最近从 Ionic 4 Angular 8 升级到了 Ionic 5 Angular 11。在浏览器 (ionic build --prod) 和 Android 调试版本 (ionic cordova build android) 中一切正常。当我为 Android 生产模式 (ionic cordova build android --prod) 构建时,我遇到随机的运行时错误,例如:

this.service.method is not a function

e.service.method is not a function

这些错误不会导致崩溃,之后应用程序运行良好,但某些功能已损坏。这仅发生在组件和页面中调用的某些服务和方法中,我找不到任何模式。可能是什么原因?

将添加更多细节,但目前不知道从哪里开始。

d332426126 回答:Ionic 5 Angular 11 Cordova build prod - 随机运行时错误:所述方法不是函数

我已经找到了解决方案,但仍然发布,因为我认为这是构建过程中的一个主要问题,如果您不小心,它会在没有任何明确警告的情况下在随机位置默默地破坏您的项目.

在构建过程中,我收到了一些我(显然)忽略的警告,例如:

Warning: <path>/app-components-generic.module.ts depends on 'angular2-chartjs'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

这些“优化救助”实际上似乎打破了优化模块和非优化模块之间的引用,这显然会搞砸并导致应用程序在随机位置中断。这实际上是我最好的猜测,因为官方的 Angular 文档没有提供这样的警告。

这是我修复它的方法:

"build": {
  "builder": "@angular-devkit/build-angular:browser","options": {
     ...
     "allowedCommonJsDependencies": [
       "angular2-chartjs",...
     ]
     ...

参考文献:

本文链接:https://www.f2er.com/8515.html

大家都在问