Jenkins构建问题-npm ERR!您的缓存文件夹包含root拥有的文件



我正试图在Jenkins管道上构建一个小节点应用程序,该应用程序正在虚拟机中运行。越过这个错误:

+ npm install
npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /.npm
npm ERR! errno EACCES
npm ERR! 
npm ERR! Your cache folder contains root-owned files, due to a bug in
npm ERR! previous versions of npm which has since been addressed.
npm ERR! 
npm ERR! To permanently fix this problem, please run:
npm ERR!   sudo chown -R 111:120 "/.npm"

运行sudo chown -R 111:120 "/.npm"没有帮助,因为它显示:

chown:无法访问'/.npm':没有这样的文件或目录

根据我的理解,当问题实际上是从容器的角度来看时,它在本地上下文中运行。我试图在Docker和Jenkinsfile上添加上面的命令,但没有成功。以下是我的公开回购:

节点应用程序部署在github 上

npm install --cache=".YourCustomCacheDirectoryName"

工作非常好,原因是您的docker用户不允许在/(根目录(中写入这并不是说/上已经存在一个目录。npm是这样,您的脚本正试图在/上创建一个用户无法访问的目录你可以放

agent {
docker {
image 'node:latest'
args '-u root:root'
}
}

或者只告诉npm使用您的自定义缓存目录

我遇到了同样的问题,并通过在Dockerfile中将npm缓存目录设置为ENV变量来修复它。

将其添加到Dockerfile:

ENV npm_config_cache /home/node/app/.npm

据我记忆所及,仅仅更新npm版本并删除整个项目就成功了。

最新更新