ng-packagr构建报错EPERM:操作不被允许,Angular组件库构建受阻
我之前在Windows环境下用ng-packagr打包Angular组件库时也碰到过一模一样的EPERM权限问题,结合你的环境配置,给你几个实用的解决方案,按顺序试试应该能解决:
以管理员身份运行开发工具
Windows的权限管控经常会限制普通进程读写某些目录,尤其是项目的dist和node_modules文件夹。右键点击你的Angular IDE或者命令提示符,选择「以管理员身份运行」,然后重新执行打包命令:ng-packagr -p ng-package.json清理缓存与残留文件
残留的编译文件或npm缓存可能导致文件锁,引发权限问题。先手动删除dist目录,再清理npm缓存:rmdir /s /q dist npm cache clean --force之后重新安装依赖:
npm install,再尝试打包操作。检查项目目录的权限设置
右键点击你的项目根文件夹,选择「属性」→「安全」选项卡,确保当前登录用户对该文件夹拥有「完全控制」的权限。如果权限不足,点击「编辑」按钮添加当前用户,并勾选所有权限选项,应用设置后重启IDE再试。临时禁用Windows Defender实时保护(测试用)
Windows Defender的实时扫描有时会锁定ng-packagr正在生成的文件,导致写入失败。你可以临时关闭实时保护,执行打包命令,如果成功了,记得把项目目录添加到Defender的排除列表中,再重新开启保护。升级兼容版本的ng-packagr
你当前使用的ng-packagr 2.4.2适配Angular 5,但同大版本的后续更新修复了不少Windows下的权限bug。可以升级到2.x分支的最新版:npm install ng-packagr@2.8.0 --save-dev这个版本依然兼容你的Angular 5.2.10,大概率能解决旧版本的权限问题。
排查占用文件的其他进程
打开任务管理器的「详细信息」标签,看看有没有其他程序(比如杀毒软件、OneDrive等文件同步工具、甚至其他打开的IDE窗口)正在占用项目中的文件,关闭这些进程后再尝试打包。
内容的提问来源于stack exchange,提问作者Kevin de Goede




