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

Posted

技术标签:

【中文标题】错误:EACCES:权限被拒绝,mkdir \'/.npm\'【英文标题】:Error: EACCES: permission denied, mkdir '/.npm'错误:EACCES:权限被拒绝,mkdir '/.npm' 【发布时间】:2019-10-28 10:19:45 【问题描述】:

我试图使用 Jenkinsfile 为 nodejs 应用程序运行本地 Jenkins 管道,使用 node:6-alpine 映像(默认)使用 build.sh 脚本调用 npm install 然后我得到以下权限错误

npm 错误!错误:EACCES:权限被拒绝,mkdir '/.npm' npm 错误!在错误(本机) npm 错误! 错误:EACCES:权限被拒绝,mkdir '/.npm' npm 错误!在错误(本机) npm 错误!错误号:-13, npm 错误!代码:'EACCES', npm 错误!系统调用:'mkdir', npm 错误!路径:'/.npm', npm 错误!父母:'我的应用' npm 错误! npm 错误!请尝试以 root/管理员身份再次运行此命令。

Docker 版本 18.09.6,构建 481bc77 Jenkins 在本地运行

我试过 sudo npm install 但同样的错误。我也尝试将 docker image argv 修改为 -u root:sudo -p 3000:3000 同样的错误

Jenkins file image: 
pipeline 
    agent 
        docker 
            image 'node:6-alpine'
            args '-p 3000:3000'
        
        environment 
            HOME = '.'
        
    

build.sh 脚本 sudo npm install --unsafe-perm=true --allow-root

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

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

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

【问题讨论】:

【参考方案1】:

在这里的类似帖子中找到了答案:npm install fails in jenkins pipeline in docker

在我的情况下,使用以下方法解决了它:

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

【讨论】:

以上是关于错误:EACCES:权限被拒绝,mkdir '/.npm'的主要内容,如果未能解决你的问题,请参考以下文章

Errno::EACCES(权限被拒绝@dir_s_mkdir

Rails 4.2.0 - Errno::EACCES(权限被拒绝@dir_s_mkdir - /files)

电子制造商:EACCES:权限被拒绝

Docker:EACCES:权限被拒绝,mkdir '/app/node_modules/.cache'

将 React 添加到工作区失败,EACCES:权限被拒绝,mkdir '/home/mint/.cache/Cypress'

EACCES:权限被拒绝 mkdir ...尝试在节点项目中使用 docker 卷时