使用Cypress Docker镜像测试Angular应用时安装NPM依赖报错
解决方法
该报错是因为你使用的cypress/base:14镜像内置的npm版本存在历史bug,系统级npm缓存目录/.npm归属root用户,而Jenkins启动容器时默认使用UID为1002的非root用户,没有写入权限导致的,可任选以下一种方案解决:
方案1:运行npm安装前修正缓存目录权限
直接按照报错提示的命令修改目录归属,在npm i前新增权限修正步骤:
若镜像中未配置sudo权限,可选择方案2。script { sh('sudo chown -R 1002:1002 /.npm') sh('npm i') //Run e2e tests sh('npm run cy:run') }方案2:修改npm缓存目录到当前工作空间
无需root权限,将npm缓存目录指定到当前Jenkins工作空间即可绕过系统目录权限限制:script { sh('npm config set cache $(pwd)/.npm_cache --global') sh('npm i') //Run e2e tests sh('npm run cy:run') }方案3:升级Cypress基础镜像
该npm权限bug已在新版本中修复,直接更换更高版本的Cypress基础镜像即可从根源解决问题,无需修改执行步骤:agent { docker { // 替换为更高版本的镜像,例如Node.js 18版本的基础镜像 image 'cypress/base:18' } }
附加说明:日志中的peer依赖警告不影响程序正常运行,若需要消除警告,可将npm i替换为npm i --legacy-peer-deps。
内容的提问来源于stack exchange,提问作者Pavan Jadda
相关产品推荐
相关产品推荐

