詹金斯:npm EACCES:许可被拒绝

时间:2017-10-23 15:24:00

标签: node.js jenkins

我有以下一个简单的sudo npm install,它继续在EACCESS错误上失败:

enter image description here

我已在服务器上尝试过以下操作:

sudo chown -R jenkins /var/lib/jenkins/workspace/
sudo setfacl -R -m user:jenkins:rwx /var/lib/jenkins/workspace

但不幸的是,似乎没有任何效果。

很想听听可能导致问题的一些建议。

由于

4 个答案:

答案 0 :(得分:2)

实际上,帮助我在Ubuntu Linux中使用具有sudo权限的Jenkins的原因是以下命令:

sudo chown -R jenkins folderName
sudo setfacl -R -m user:jenkins:rwx folderName

还需要浏览到Ubuntu上的Jenkins安装目录,

/var/lib/jenkins/workspace

假设您位于主文件夹中,则必须向下两个级别。

cd ..
cd ..

然后

cd /var/lib/jenkins/workspace

然后

sudo chown -R jenkins folderName
sudo setfacl -R -m user:jenkins:rwx folderName

这解决了我的“以root身份运行詹金斯”问题。

答案 1 :(得分:1)

.npm-global更新为适当的所有者。使用Jenkins进行部署时,我遇到了类似的问题。 .npm-global文件夹的所有者是Jenkins,但该文件夹下的所有子文件夹均以root作为所有者。然后,我使用下面的命令

更改了所有者
sudo chown -R ubuntu:ubuntu .npm-global

答案 2 :(得分:0)

看起来您的问题似乎不是重复的,但是人们在安装node-sass时遇到了问题。

解决特定问题的最简单方法是:

sudo npm install --unsafe-perm node-sass

答案 3 :(得分:0)

就我而言,此问题在构建时与docker映像结合出现。 我必须设置npm_config_cache=npm-cacheHOME=.环境变量,以便npm使用当前目录进行构建。

Jenkinsfile:

docker.withRegistry('https://my_registry/', 'docker_user') {
    docker.image('node-agent:node-14').inside {
        withEnv([
            /* Override the npm cache directory */
            /* Reset Home dir */
            'npm_config_cache=npm-cache',
            'HOME=.',
        ]) {
            stage('NPM Build') {
                sh "rm -rf node_modules || true" // removing node_modules if existing.
                sh 'npm install'
                sh 'npm run build'
            }
        }
    }
}