kay*_*234 63 ivy typescript angular angular-compiler
在将依赖项升级到 Angular 9(并执行必要的代码更改)后构建应用程序会引发错误:
编译@angular/animations : es2015 as esm2015 编译@angular/animations : es2015 as esm2015 编译@angular/core : es2015 as esm2015 编译@angular/core : es2015 as esm2015 as esm2015
编译
错误:@angular es102015 #5:类型错误:无法读取 null 的属性“fileName”
然后继续抛出以下错误:
编译@angular/core : es2015 as esm2015 编译@angular/compiler/testing : es2015 as esm2015 编译@angular/core : es2015 as esm2015
错误:试图用anonybyakts编写node_modules/@angular/core.cc_ivyakts ngcc 备份文件,但它已经存在,所以不写,也不备份,node_modules/@angular/core/core.d.ts。
这个错误可能是因为两个或多个入口点重叠,并且 ngcc 被要求不止一次处理一些文件。
您应该检查此包中的其他入口点并设置配置以忽略您未使用的任何入口点。
将@angular/core : es2015 编译为 esm2015 发生未处理的异常:NGCC 失败。
Flo*_*lip 71
我和我的同事开发人员在我们的 localhost 机器上遇到了这个问题(NGCC 失败)。
重要的是要注意 dev 和 prod 机器运行良好。
为了解决这个问题,我们遵循了以下步骤:
我希望这对您和其他人在这种情况下有所帮助。
Bas*_*Que 44
在我的特殊情况下,@angular-devkit/build-angular在运行npm audit fix后在我的 package.json 中更新为“ ^0.1001.2 ” 。(这个版本好像属于angular 10,而不是本地项目的angular版本(v9.1.7))
恢复此更改后,一切又开始工作:
“@angular-devkit/build-angular”:“ ~0.901.6 ”
Rez*_*aba 21
使用终端/cmd,
第一步:
ng update @angular/cli @angular/core
Run Code Online (Sandbox Code Playgroud)
第二步:
ng update
Run Code Online (Sandbox Code Playgroud)
第三步:
ng serve
Run Code Online (Sandbox Code Playgroud)
固定我的。
注意 bootstrap 文件夹中的自定义 css 文件可能会被删除。在更新之前备份它们并在更新后将它们放回原处!
Jac*_*iol 13
尝试删除该node_modules文件夹并再次运行安装:
rm -rf node_modules
Run Code Online (Sandbox Code Playgroud)
npm install
Run Code Online (Sandbox Code Playgroud)
对我来说它已经解决了这个问题。
Jij*_*tus 12
这个问题是因为你可能在任何端口上运行你的应用程序,并且 angular ngcc 被分配了一个特定的进程 id,该进程 id 被指定并锁定在一个名为__ngcc_lock_file__inside的文件中
\node_modules\@angular\compiler-cli\ngcc。如果您正在关闭硬系统或您的操作系统崩溃,则此锁定文件将位于 node_modules.h 中。一旦您打开机器并尝试再次启动应用程序,angular cli 将检查此锁定文件并尝试查找文件中指定的进程 ID。大多数情况下,由于您重新启动了完整的机器,该进程 ID 将丢失,并且会引发此错误。
解决方案 1。删除node_modules并执行 npm install
解决方案2。聪明的解决方案 - 删除锁定文件,如下所示。
Go to `\node_modules\@angular\compiler-cli\ngcc`
Run Code Online (Sandbox Code Playgroud)
找到名为__ngcc_lock_file__删除它的文件。完毕。
快乐黑客
在文件tsconfig.json中设置"enableIvy": false确实修复了该特定错误。Ivy 应该已经可以使用了。
我在clement911 对Error after update to version 9 #36060的回答中发现了这一点,经过大量测试后它对我有用。