18

我们有一个带有测试的 Angular 8 项目。我们正在尝试升级到 Angular 9,并完成了https://update.angular.io/#8.0:9.0l3中的所有步骤。这一切都很顺利,没有任何问题。该应用程序编译没有错误,所有测试都运行良好。我们在运行时收到此错误。当我们关闭 Ivy 时,它运行良好,所以看起来肯定与 Ivy 有关。

zone-evergreen.js:659 Unhandled Promise rejection: Cannot read property 'id' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'id' of undefined
at registerNgModuleType (core.js:35467)
at core.js:35485
at Array.forEach (<anonymous>)
at registerNgModuleType (core.js:35481)
at core.js:35485
at Array.forEach (<anonymous>)
at registerNgModuleType (core.js:35481)
at new NgModuleFactory$1 (core.js:35649)
at compileNgModuleFactory__POST_R3__ (core.js:41403)
at PlatformRef.bootstrapModule (core.js:41768) TypeError: Cannot read property 'id' of undefined
at registerNgModuleType (http://localhost:8080/vendor.js:41436:27)
at http://localhost:8080/vendor.js:41454:14
at Array.forEach (<anonymous>)
at registerNgModuleType (http://localhost:8080/vendor.js:41450:17)
at http://localhost:8080/vendor.js:41454:14
at Array.forEach (<anonymous>)
at registerNgModuleType (http://localhost:8080/vendor.js:41450:17)
at new NgModuleFactory$1 (http://localhost:8080/vendor.js:41602:13)
at compileNgModuleFactory__POST_R3__ (http://localhost:8080/vendor.js:46530:27)
at PlatformRef.bootstrapModule (http://localhost:8080/vendor.js:46859:16)
4

9 回答 9

33

我尝试ng build --prod为我的 Angular 应用程序运行构建。它清楚地告诉我我有什么问题。您可以尝试一下以了解您需要解决的问题。

于 2020-02-25T10:26:27.370 回答
3

我终于能够找到错误。我不得不注释掉所有导入的模块app.component.tsapp.module.tsshared.module.ts一次添加一个模块。我终于把它缩小到包含angular2-recaptcha. 那包括一个名为ReCaptchaModule. 我目前正在研究如何升级或替换它。

希望这对其他人来说是一个很好的故障排除技巧。

于 2020-02-19T01:15:43.767 回答
3

尝试"enableIvy": truets.config下面添加"angularCompilerOptions"并运行ng serve它会给你一个关于错误的更精确的描述。

于 2021-02-26T09:46:21.550 回答
1

作为替代

我终于能够找到错误。我必须注释掉 app.component.ts、app.module.ts 和 shared.module.ts 中所有导入的模块,并一次添加一个模块。我终于把它缩小到包括 angular2-recaptcha。这包括一个名为 ReCaptchaModule 的模块。我目前正在研究如何升级或替换它。

希望这对其他人来说是一个很好的故障排除技巧。

你可以做'ng build',就我而言,它表明我的“angular2-multiselect-dropdown”版本与Ivy不兼容。升级该软件包对我有用。所以这是发现一些不兼容的一种非常简单的方法。

于 2020-03-10T18:08:28.617 回答
0

看起来像模块编译的问题。尝试清除node_modules并运行:

ngcc --properties main

根据此评论:https ://github.com/angular/angular/issues/31314#issuecomment-562373301

于 2020-02-19T03:05:24.320 回答
0

对我来说,我检查了我使用的包是否与 Angular9 兼容。删除不兼容的软件包后,一切正常。

注意:我碰巧也使用了 angular2-recaptcha,它与 Angular9 不兼容。

于 2020-04-09T04:13:30.227 回答
0

对于任何阅读本文并遇到相同问题的人。

我的解决方案是将其添加到 build.options 的 angular.json 中:


 "preserveSymlinks": true

于 2020-06-12T08:29:08.167 回答
0

对我来说,ng build --prod 抛出了大约 2000 多行错误。其中大部分甚至来自角度内置功能,例如找不到日期管道。通过执行以下操作解决:

  • 运行“npx ngcc”将第三方组件编译为 ivy。
  • 在下图中抛出错误的浏览器中添加了一个调试点
  • 这导致我找到有问题的插件(在我的情况下是 ngx-slick),但这在日志中没有
  • 刚刚将这个有问题的插件更新到最新版本,瞧!

在此处输入图像描述

于 2020-12-03T10:10:38.453 回答
0

更新到 11.3.1 后,今天在我的 Mac 上发生了这种情况。

我删除node_modules了文件夹,当我运行npm i它时抱怨No Xcode or CLT version.

为了解决我跑了

sudo xcode-select --reset

有关这方面的更多信息,请参阅本文

于 2021-05-16T23:49:31.553 回答