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

the*_*per 6 node.js jenkins

我正在尝试在 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"
Run Code Online (Sandbox Code Playgroud)

跑步sudo chown -R 111:120 "/.npm"没有帮助,因为它说:

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

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

Node应用程序部署在github上

zOt*_*hix 19

npm install --cache=".YourCustomCacheDirectoryName"
Run Code Online (Sandbox Code Playgroud)

工作得很好,原因是你的 docker 用户不允许在 / (根目录)中写入,它不是 /.npm 中已经存在一个目录,而是你的脚本正在尝试在 / 中创建一个不存在的目录您的用户可以访问,您可以将

agent {
    docker {
      image 'node:latest'
      args '-u root:root'
    }
}
Run Code Online (Sandbox Code Playgroud)

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


the*_*per -3

据我记得,只需更新 npm 版本并删除整个项目就可以了。