【问题标题】:On npm install: Unhandled rejection Error: EACCES: permission denied在 npm install 上:未处理的拒绝错误:EACCES:权限被拒绝
【发布时间】:2018-11-11 09:00:27
【问题描述】:

我设法破坏了我的 npm 安装,并且每当我尝试使用 npm install 安装软件包时,我都会收到以下错误消息:

未处理的拒绝错误:EACCES:权限被拒绝,打开 '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

我已尝试重新安装 node 和 npm,我还尝试使用 these instructions 将我的 npm 缓存重新定位到其他地方,但没有任何效果。

我怎样才能让它工作?

【问题讨论】:

    标签: npm permissions


    【解决方案1】:

    将用户的 npm 相关文件夹的所有权恢复给当前用户,如下所示:

    sudo chown -R $USER:$GROUP ~/.npm
    sudo chown -R $USER:$GROUP ~/.config
    

    【讨论】:

    • 在我尝试了 4-5 次其他不起作用的事情后,这对我有用:1) --unsafe-perm,2) 升级 npm,3) 重新启动,4) 使用 sudo 运行等等
    • 对我来说和@AlexYork 一样。我已经看到我的用户和组是这两个的所有者,但我猜一两个子目录有不同的所有者。谢谢!
    • 这对我有用:),在此之前我尝试过这个docs.npmjs.com/…。无法理解是相同的问题还是不同的问题。
    • 看起来,在我使用节点的某个时刻,其中一个缓存目录是使用root 所有权创建的。这一切都解决了。谢谢!
    • 这对我有用,谢谢!我尝试使用 npm 推荐的节点版本管理器重新安装 npm,但没有成功!
    【解决方案2】:

    sudo chown -R $(whoami) ~/.npm

    sudo chown -R $(whoami) ~/.config

    【讨论】:

      【解决方案3】:

      如果您第一次使用 sudo 运行 NPM,就会发生这种情况,例如尝试执行 npm install -g 时。

      缓存文件夹需要由当前用户拥有,而不是 root。

      sudo chown -R $USER:$GROUP ~/.npm
      sudo chown -R $USER:$GROUP ~/.config
      

      当使用普通用户权限(而不是 sudo)运行时,这将授予上述文件夹的所有权。

      同样值得注意的是,您不应该使用 SUDO 安装全局包。如果您确实遇到权限问题,则值得更改您的全局目录。文档推荐:

      mkdir ~/.npm-global

      npm config set prefix '~/.npm-global'

      然后在您定义的任何地方更新您的 PATH(~/.profile 等)

      export PATH=~/.npm-global/bin:$PATH

      然后您需要确保已设置 PATH 环境变量(重新启动终端或使用 source 命令)

      https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

      【讨论】:

      • 投票赞成以明确解释原因:)
      • 是的。当上面的“正确解决方案”没有解决时,这为我解决了问题。
      • 所有这些东西都应该被 npm 抽象掉,但是我们必须手动处理它。你会认为维护人员修复这样的事情是高度优先的,但我知道什么。感谢您解释为什么我们需要执行这些命令!
      【解决方案4】:
      sudo npm cache clean --force --unsafe-perm
      

      然后 npm i 正常运行

      【讨论】:

        【解决方案5】:

        以上答案对我不起作用。只需尝试使用--unsafe-perm 运行您的命令。

        例如

        npm install -g node@latest --unsafe-perm
        

        这似乎解决了问题。

        【讨论】:

        • @JenLim 你解决了吗?
        • 我通过在终端中运行以下命令解决了这个问题:npm cache clear — force。
        【解决方案6】:

        如果答案中的任何建议都没有解决,请尝试以下命令:npm cache clear --force。它对我有用。

        我在https://github.com/vuejs/vue-cli/issues/1809找到它。

        【讨论】:

          【解决方案7】:

          只需在.npm 下的/Users/marknorgate/.npm/_cacache/tmp 位置手动创建文件夹_cache/tmp 并以管理员权限运行您的命令

          【讨论】:

            【解决方案8】:
            sudo npm install --unsafe-perm=true --allow-root
            

            这对我有用

            【讨论】:

              【解决方案9】:

              更改所有权

              sudo chown -R $USER:$GROUP ~/.npm
              sudo chown -R $USER:$GROUP ~/.config 
              

              在我使用 sudo 安装软件包时工作

              【讨论】:

                【解决方案10】:
                【解决方案11】:

                只需执行sudo npm cache clean --force --unsafe-permnpm i 即可正常运行。

                【讨论】:

                  【解决方案12】:

                  尝试使用这个: 在命令行的主目录中,为全局安装创建一个目录:

                  mkdir ~/.npm-global
                  

                  配置 npm 以使用新的目录路径:

                  npm config set prefix '~/.npm-global'
                  

                  在您喜欢的文本编辑器中,打开或创建一个 ~/.profile 文件并添加以下行:

                  export PATH=~/.npm-global/bin:$PATH
                  

                  在命令行上,更新您的系统变量:

                  source ~/.profile
                  

                  现在使用 npm install 它应该可以工作了。

                  【讨论】:

                    【解决方案13】:

                    您可以尝试以下命令进行博览会:

                    sudo chown -R $USER:$GROUP ~/.expo
                    

                    【讨论】:

                      【解决方案14】:

                      根据 npm 社区

                      sudo npm cache clean --force --unsafe-perm
                      

                      然后 npm install 就正常了。

                      来源:npm community-unhandled-rejection-error-eacces-permission-denied

                      【讨论】:

                        【解决方案15】:

                        只需在终端上运行:sudo chown -R $(whoami) ~/.npm

                        这对我有用!!

                        【讨论】:

                          【解决方案16】:

                          这个对我有用:

                          sudo chown -R $(whoami) ~/.npm
                          

                          我没有使用-g,因为我是唯一的用户。我用的是 MacBook Air。

                          【讨论】:

                            【解决方案17】:

                            sudo npm install -g @angular/cli

                            使用这个。它对我有用

                            【讨论】:

                              猜你喜欢
                              • 2018-03-01
                              • 2019-10-28
                              • 2021-07-22
                              • 2018-03-08
                              • 2018-06-08
                              • 2017-05-12
                              • 2017-12-29
                              • 2016-11-14
                              • 2021-07-28
                              相关资源
                              最近更新 更多