在将依赖关系升级到Angular 9(并进行了必要的代码修改)后,编译应用程序会抛出一个错误。
Compiling @angularanimations : es2015 as esm2015 Compiling @angularanimations : es2015 as esm2015 Compiling @angularcore : es2015 as esm2015 Compiling @angularcore : es2015 as esm2015 Compiling @angularcore : es2015 as esm2015 Compiling @angularcore : es2015 as esm15 错误: Worker #5出错:TypeError。无法读取null属性'fileName'。
然后它继续抛出以下错误。
Compiling @angularcore : es2015 as esm2015 Compiling @angularcompilertesting : es2015 as esm2015 Compiling @angularcore : es2015 as esm2015 错误: 尝试用ngcc备份文件写入[email protected].__ivy_ngcc_bak,但它已经存在,所以不能写入,也不能备份[email protected]。
这个错误可能是因为有两个或更多的入口点重叠,而且ngcc被要求处理一些文件超过一次。你应该检查这个包中的其他入口点,并设置一个配置来忽略任何你不使用的入口点。
编译 @angularcore : es2015 为 esm2015 发生了一个未处理的异常。NGCC失败。
这个问题(NGCC失败)是我和我的同事开发者在我们的本地主机上遇到的。
需要说明的是,开发和生产的机器运行良好。
为了解决这个问题,我们按照接下来的步骤进行了处理。
我希望这能帮助你和其他遇到这种情况的人。
检查你的node.js版本,用 node -v
. 并检查Angular 9是否与它兼容.更新node.js到最新的LTS版本(12.8.1)为我工作.我用nvm(node版本管理器)做到了这一点.找到了一个很好的指导。此处.
在tsconfig.json中设置 "enableIvy":false确实解决了这个特殊的错误。"Ivy "不是应该已经可以使用了吗?
我在下面找到的这个答案 请在此输入链接描述 @clement911的回答,经过大量的测试后,我的效果很好。
我也有类似的问题。
在我的例子中,更新NodeJS到新版本就有帮助。
我一般建议大家在每次完成部署(本地)后都要对项目进行手动备份,因为当你遇到这种问题时(一切与 NGCC errors
)你可以直接硬删除 node_modules
文件夹,并将其从您的 last backup
.然后再建立。
有时,当你没有能力更新 nodeJS
至 末版,这个解决方案将是完美的。
试着去除 node_modules
文件夹,再运行安装。
rm -rf node_modules
npm install
对我来说,它已经解决了这个问题。