angular - 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
这些错误不会导致崩溃,之后应用程序运行良好,但某些功能已损坏。这只发生在组件和页面中调用的某些服务和方法,没有我能找到的任何模式。可能是什么原因?
将添加更多细节,但目前不知道从哪里开始。
解决方案
我找到了解决方案,但仍然发布,因为如果您不小心,我认为这是构建过程中的一个主要问题,因为它可以在没有任何明确警告的情况下在随机位置静默破坏您的项目。
在构建过程中,我收到了一些我(显然)忽略的警告,例如:
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",
...
]
...
参考:
推荐阅读
- statistics - 卡方输出为向量
- node.js - 机器人不响应命令(discord.js v12)
- c# - SignalR 与 Chroniton
- python - 你如何从不同的目录访问 pngs 并合并它们?
- python - 为什么 PyCharm 不显示类型提示验证错误
- bash - 从关联数组设置更改环境变量
- javascript - 用 Jest 测试 React Native Hook
- ios - (React Native) npm run ios 出错,构建命令失败:PhaseScriptExecution
- google-sheets - 我在使用谷歌表格的查询功能时遇到问题
- python - 有没有比三重嵌套 for 循环更好的方法来连接三个列表中的元素?