Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 9和Ivy出现运行时错误:无法读取属性';id';未定义的;区_Angular_Angular9 - Fatal编程技术网

Angular 9和Ivy出现运行时错误:无法读取属性';id';未定义的;区

Angular 9和Ivy出现运行时错误:无法读取属性';id';未定义的;区,angular,angular9,Angular,Angular9,我们有一个角度8测试项目。我们正在尝试升级到Angular 9,并完成了中的所有步骤。一切进展顺利,没有问题。应用程序编译时没有错误,所有测试运行正常。我们在运行时遇到此错误。当我们关闭常春藤,它运行良好,所以显然似乎与常春藤有关 zone-evergreen.js:659 Unhandled Promise rejection: Cannot read property 'id' of undefined ; Zone: <root> ; Task: Promise.then ;

我们有一个角度8测试项目。我们正在尝试升级到Angular 9,并完成了中的所有步骤。一切进展顺利,没有问题。应用程序编译时没有错误,所有测试运行正常。我们在运行时遇到此错误。当我们关闭常春藤,它运行良好,所以显然似乎与常春藤有关

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)
zone evergreen.js:659未处理的承诺拒绝:无法读取未定义的属性“id”;区域:;任务:承诺;值:TypeError:无法读取未定义的属性“id”
在registerNgModuleType(core.js:35467)上
在core.js:35485
在Array.forEach()处
在registerNgModuleType(core.js:35481)上
在core.js:35485
在Array.forEach()处
在registerNgModuleType(core.js:35481)上
在新的NgModuleFactory$1(core.js:35649)
在compileNgModuleFactory\uuuuu POST\uur3\uuuuuuu(core.js:41403)
在PlatformRef.bootstrapModule(core.js:41768)中,TypeError:无法读取未定义的属性“id”
在registerGmoduleType(http://localhost:8080/vendor.js:41436:27)
在http://localhost:8080/vendor.js:41454:14
在Array.forEach()处
在registerGmoduleType(http://localhost:8080/vendor.js:41450:17)
在http://localhost:8080/vendor.js:41454:14
在Array.forEach()处
在registerGmoduleType(http://localhost:8080/vendor.js:41450:17)
在新的NgModuleFactory$1(http://localhost:8080/vendor.js:41602:13)
在compileNgModuleFactory\uuu POST\ur3\uuu(http://localhost:8080/vendor.js:46530:27)
在PlatformRef.bootstrapModule(http://localhost:8080/vendor.js:46859:16)

我终于找到了错误所在。我不得不注释掉
app.component.ts
app.module.ts
shared.module.ts
中所有导入的模块,然后一次添加一个模块。最后,我把范围缩小到包括
angular2 recaptcha
。其中包括一个名为
ReCaptchaModule
的模块。我目前正在研究如何升级或替换它


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

看起来像是模块编译的问题。尝试清除
节点\u模块
并运行:

ngcc--properties main


根据此注释:

我尝试为我的Angular应用程序运行build
ngbuild--prod
。它清楚地告诉我我有什么问题。你可以试试看,知道你需要解决什么。

也遇到了这个问题。在为我使用NPM链接时,似乎发生得更频繁。无法确定问题的根源是我链接的第一方应用程序还是第三方库

VM11697 polyfills.js:3507未捕获类型错误:无法读取未定义的属性“id”
在registergmoduletype(vm1169vendor.js:78834)
在VM11699 vendor.js:78852
在Array.forEach()处
在registergmoduletype(vm1169vendor.js:78848)
在VM11699 vendor.js:78852
在Array.forEach()处
在registergmoduletype(vm1169vendor.js:78848)
在新的NgModuleFactory$1(VM11699 vendor.js:79000)
在compileNgModuleFactory\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在PlatformRef.bootstrapModule(vm1169vendor.js:84257)
我只是通过构建、服务、构建、取消链接、再次构建、再次链接的动作,它就工作了。这是令人恼火的,因为这无助于解决这个问题。最近也从8升级到了9。花了一些时间处理生成错误。其中大多数与未导入库模块的组件有关

但是,我在运行库构建的终端中注意到:

尝试用ngcc备份文件覆盖/Users/keith/Development/ngx atoms/dist/atoms/lib/directives/collapse/collapse.directive.d.ts.\uuu ivy\u ngcc\u bak时出错,这是不允许的。
如果有人遇到过同样的问题,那就把它弄个水落石出吧。


我终于找到了错误。我不得不在app.component.ts、app.module.ts和shared.module.ts中注释掉所有导入的模块,然后一次添加一个模块。我最后把范围缩小到包括angular2 recaptcha在内。其中包括一个名为ReCaptchaModule的模块。我目前正在研究如何升级或替换它

希望这对其他人来说是一个很好的故障排除提示


你可以做“ng构建”,在我的例子中,它表明我的“angular2 multiselect dropdown”版本与Ivy不兼容。升级那个软件包对我很有效。因此,这是一种很容易发现不兼容的方法。

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


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

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

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


 "preserveSymlinks": true

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

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

尝试在
ts.config
下的
angularCompilerOptions“
下添加
“enableIvy”:true
,运行
ng serve
会给你一个更精确的错误描述。

这是我在升级到11.3.1之后,今天在我的Mac电脑上发生的

我删除了
node\u modules
文件夹,当我运行
npmi
时,它抱怨
没有Xcode或CLT版本。

为了解决这个问题,我跑了

sudo xcode-select --reset
有关更多信息,请参阅