Node.js 错误:EACCES:权限被拒绝,mkdir'/.npm'

Node.js 错误:EACCES:权限被拒绝,mkdir'/.npm',node.js,docker,jenkins-pipeline,Node.js,Docker,Jenkins Pipeline,我试图使用一个Jenkins文件运行本地Jenkins管道,该文件用于使用node:6-alpine image default的nodejs应用程序,使用一个build.sh脚本,该脚本使用call npm install,然后我得到以下权限错误 npm错误!错误:EACCES:权限被拒绝,mkdir'/.npm' npm错误!错误的本地 npm错误!{错误:EACCES:权限被拒绝,mkdir'/.npm' npm ERR!出现本机错误 npm ERR!errno:-13, npm错误!代码

我试图使用一个Jenkins文件运行本地Jenkins管道,该文件用于使用node:6-alpine image default的nodejs应用程序,使用一个build.sh脚本,该脚本使用call npm install,然后我得到以下权限错误

npm错误!错误:EACCES:权限被拒绝,mkdir'/.npm' npm错误!错误的本地 npm错误!{错误:EACCES:权限被拒绝,mkdir'/.npm' npm ERR!出现本机错误 npm ERR!errno:-13, npm错误!代码:“EACCES”, npm ERR!系统调用:“mkdir”, npm ERR!路径:'/.npm', npm ERR!家长:“我的应用程序”} npm错误! npm错误!请以root/管理员身份再次尝试运行此命令

Docker版本18.09.6,内部版本481bc77 詹金斯在本地运行

我尝试了sudo npm安装,但出现了相同的错误。我还尝试将docker映像argv修改为-u root:sudo-p3000:3000,这是相同的错误

Jenkins file image: 
pipeline {
    agent {
        docker {
            image 'node:6-alpine'
            args '-p 3000:3000'
        }
        environment {
            HOME = '.'
        }
    }
build.sh脚本 sudo npm安装-不安全perm=true-允许root

错误消息:npm错误!错误:EACCES:权限被拒绝,mkdir'/.npm'

预期结果:创建docker容器,暴露端口3000,并在localhost:3000上运行nodejs应用程序


实际结果:容器内的权限错误。

在此处的类似线程中找到答案:

在我的案例中,使用以下方法解决了此问题:

pipeline {
    agent {
        image 'node:13-alpine'
    }
    environment {
        npm_config_cache = 'npm-cache'
    }
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
                ...
            }
        }
    }
}