Jenkins内部版本问题- npm错误!您的缓存文件夹包含根所有的文件

qlckcl4x  于 2023-01-16  发布在  Jenkins
关注(0)|答案(3)|浏览(290)

我正在尝试在我的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 ":无此文件或目录
而且,根据我的理解,它在本地环境中运行,而问题实际上是从容器的Angular 来看的。我也尝试过在我的Docker和Jenkinsfile上添加上面的命令,但是没有用。下面是我的公共repo:
Node app deploy on github

rjjhvcjd

rjjhvcjd1#

npm install --cache=".YourCustomCacheDirectoryName"

工作得非常好,原因是您的Docker用户不允许写入/(根目录),这不是因为/.npm中已经存在目录,而是因为您的脚本正在尝试在/中创建您的用户无法访问的目录,您可以将

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

或者只是告诉npm使用你的定制缓存目录

qgelzfjb

qgelzfjb2#

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

ENV npm_config_cache /home/node/app/.npm
p4tfgftt

p4tfgftt3#

从我的记忆来看,仅仅更新npm版本并删除整个项目就做到了这一点。

相关问题