升级Angular组件后执行ngcc命令报错:不允许覆盖备份文件
解决ngcc执行时“尝试覆盖__ivy_ngcc_bak文件不被允许”的错误
我之前升级Angular后也碰到过完全一样的问题!这是因为ngcc在生成Ivy兼容的入口文件时,会为原文件创建后缀为__ivy_ngcc_bak的备份,要是之前的备份文件没有被正确清理(比如上次ngcc进程意外中断),这次运行就会触发这个“禁止覆盖备份”的错误。下面是几个亲测有效的解决办法:
方法一:手动清理现有ngcc备份文件
直接删掉所有残留的备份文件,再重新执行ngcc命令:
- Mac/Linux:在项目根目录执行以下命令删除所有备份文件
find node_modules -name "*__ivy_ngcc_bak" -delete - Windows:在命令提示符(CMD)里执行
del /s /q node_modules\*__ivy_ngcc_bak - 之后重新运行你的ngcc命令:
ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points
方法二:重置依赖并重新安装
有时候依赖缓存或损坏也会导致这类冲突,试试彻底清理后重装:
- 删除
node_modules文件夹:# Mac/Linux rm -rf node_modules # Windows rd /s /q node_modules - 删除包管理器的锁文件(二选一,根据你用的工具):
# npm用户 rm package-lock.json # yarn用户 rm yarn.lock - 重新安装依赖:
# npm npm install # yarn yarn install - 再次执行ngcc命令
方法三:强制ngcc处理(谨慎使用)
如果上面两种方法都无效,可以尝试添加--force参数强制ngcc跳过备份检查,但注意这可能会覆盖现有备份文件,建议先备份重要文件再操作:
ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --force
内容的提问来源于stack exchange,提问作者Aniruddha Das
相关产品推荐
相关产品推荐

