Angular 12项目执行ng build构建失败 报esbuild EACCES权限错误如何解决
解决方案
报错代码EACCES是典型的Linux系统权限不足问题,核心原因是node_modules/esbuild/bin/esbuild二进制文件没有可执行权限,或者你之前用sudo执行npm install导致项目目录的文件所有权属于root用户,当前运行ng build的普通用户没有权限调用该二进制文件。
可按以下步骤依次操作修复:
- 第一步:清理旧的依赖文件
先删除现有权限异常的依赖和锁文件,避免残留问题:rm -rf node_modules package-lock.json - 第二步:修复项目目录所有权
把项目目录的所有权改回当前登录用户,消除root持有的文件权限限制:
把命令中的sudo chown -R $USER:$USER /你的项目完整路径/你的项目完整路径替换为你实际的Angular项目根目录路径即可。 - 第三步:清除npm缓存后重装依赖
不要使用sudo执行npm install安装项目依赖,sudo只会让依赖文件的所有权变成root,反而会加大后续运行时的权限问题概率,直接用当前普通用户身份执行安装:npm cache clean --force npm install - 第四步:手动给esbuild添加执行权限(可选,执行完第三步仍报错再操作)
如果安装完依赖还是出现相同报错,手动赋予esbuild二进制文件可执行权限:chmod +x node_modules/esbuild/bin/esbuild - 第五步:升级构建工具版本(可选,上述操作都无效再操作)
Angular 12.2.5对应的@angular-devkit/build-angular存在已知的esbuild权限兼容问题,可以升级到12.2的最新小版本修复该问题:npm install @angular-devkit/build-angular@12.2 --save-dev
内容的提问来源于stack exchange,提问作者Richard Matovu
相关产品推荐
相关产品推荐

