GitLab CI/CD执行Angular构建任务时出现ng: Permission denied权限错误
GitLab CI/CD构建Angular应用出现「ng: Permission denied」的解决办法
昨天还正常的构建配置突然报「ng: Permission denied」,大概率是镜像版本变更或依赖权限异常导致的,给你几个可行的解决方向:
1. 固定Node镜像版本
node:latest会自动拉取最新版镜像,新版可能调整了用户权限规则(比如默认用非root用户运行),导致ng命令没有执行权限。直接指定之前正常运行的Node版本镜像即可,比如:
image: node:20 before_script: - npm install
2. 修复ng命令的执行权限
npm install会把Angular CLI装在项目的node_modules/.bin目录下,可能这个目录的权限出现异常。在before_script里添加权限修复命令:
before_script: - npm install - chmod +x node_modules/.bin/ng
或者安装依赖时加--unsafe-perm参数,强制以root权限安装:
before_script: - npm install --unsafe-perm
3. 调整package-lock.json的处理逻辑
配置里的rm ./package-lock.json可能导致依赖安装版本混乱,间接引发权限问题。要么删掉这行命令,要么删除后彻底清理缓存再重装:
before_script: - rm -rf node_modules package-lock.json - npm install
4. 切换到root用户执行命令
如果镜像默认用非root用户,直接切换到root再执行命令:
before_script: - su - root - npm install
或者在build命令前加sudo(前提是镜像中已安装sudo):
build-npm-prod: stage: build script: - rm ./package-lock.json - npm install - sudo npm run build --prod artifacts: paths: - dist/mi-web-texo/ only: - master
内容的提问来源于stack exchange,提问作者SirRiT003
相关产品推荐
相关产品推荐

