【问题标题】:How to fix EACCES issues with npm install如何使用 npm install 修复 EACCES 问题
【发布时间】:2014-10-07 02:20:36
【问题描述】:

我的一些节点模块已安装,但在这台特定的 linux mint 机器上总是存在这些问题

npm install 

npm ERR! Error: EACCES, open '/home/me/.npm/semver/3.0.1/package/package.json'
npm ERR!  { [Error: EACCES, open '/home/me/.npm/semver/3.0.1/package/package.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/home/me/.npm/semver/3.0.1/package/package.json',
npm ERR!   parent: 'gulp' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

【问题讨论】:

    标签: npm


    【解决方案1】:

    此代码为我修复它。

    sudo chown -R `whoami` ~/.npm
    sudo chown -R `whoami` /usr/local/lib/node_modules
    

    【讨论】:

    • 我已经查看了多个答案,这是唯一对我有用的答案
    • 仅供参考,仅运行第一个命令就为我解决了 WSL 上的问题。但是,我随后也必须按照此处的说明进行操作:stackoverflow.com/questions/29468404/…
    • 我考虑过这样做,但不想将这些文件夹的所有权授予碰巧运行此脚本的任何用户。
    • 对于带有二进制文件的全局模块,可能还需要sudo chown -R `whoami` /usr/local/bin。
    【解决方案2】:

    更新。看 this answer 为了更好的方式。


    您必须设置正确的权限(所有权),以便npm 可以使用您的普通用户权限访问您的(子)目录:

    sudo chown -R $USER <directory>
    

    在您的情况下,&lt;directory&gt; 是 /home/me 和 -R 用于递归更改所有子目录的所有权,这正是您想要的。这应该可以解决 EACCESS 问题。

    遗憾的是,以root/Administrator 运行命令的建议在这里是错误的。

    您希望避免将npm 与sudo 一起运行,如recommended by the npm creator Isaac Schlueter:

    我强烈建议您不要使用 sudo 进行包管理! 包可以运行任意脚本,这使得 sudo 包管理器命令就像电锯理发一样安全。当然,它的速度很快,而且肯定会克服任何障碍,但你可能真的希望那个障碍留在那里。

    See here for more details.

    【讨论】:

    • 很好的建议。我可能会添加 - 在整个 /usr 目录上运行它可能不是一个好主意,至少不是在 MacOSX 上,因为这可能会导致进一步的问题。 (见:stackoverflow.com/questions/22329005)。我建议您在尽可能低的级别上运行它,以便您的 npm install 命令正常工作。就我个人而言,我在 /usr/local/lib/node_modues 上运行它,之后它运行良好。
    【解决方案3】:

    尝试使用“sudo npx create-react-app app-name” 它可能仍然会显示错误,因为可能缺少某些依赖项,但可能会创建一个目录和必要的文件。

    【讨论】:

      【解决方案4】:

      设置正确的权限以访问必要的目录。

      在我的情况下(Node & NPM 通过Brew 安装)BigSur:

      sudo chown -R $USER /Users/YOUR_USERNAME/node_modules
      

      【讨论】:

      • 我能够使用此代码解决我的问题。这种方法被认为是安全的,还是和使用sudo有同样的顾虑?
      【解决方案5】:

      如果你在运行后仍然遇到问题:

      sudo chown -R `whoami` ~/.npm
      sudo chown -R `whoami` /usr/local/lib/node_modules
      

      运行 npm install 命令:

      --unsafe-perm 
      

      这将帮助您毫无问题地安装软件包。

      【讨论】:

        【解决方案6】:

        要永久修复此问题,请运行:

            sudo chown -R 1000:1000 "/home/$USER/.npm"
        

        【讨论】:

          【解决方案7】:

          为了最大程度地减少权限错误的可能性,您可以将 npm 配置为使用不同的目录。在此示例中,您将在主目录中创建和使用隐藏目录。

          备份您的计算机。

          在命令行中,在您的主目录中,为全局安装创建一个目录:

          mkdir ~/.npm-global
          

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

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

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

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

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

          source ~/.profile
          

          要测试您的新配置,请在不使用 sudo 的情况下全局安装软件包:

          npm install -g jshint
          

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

          【讨论】:

            【解决方案8】:

            在 npm install 之前添加 sudo 。它将允许访问写入。

            sudo npm install [name of package].

            【讨论】:

            • 不是最佳选择。无论如何,这已经在其他答案中提到了。
            【解决方案9】:

            我知道有人可能会对更改位于系统文件中的文件夹的所有权持怀疑态度。但它是完全安全的,它们旨在托管无需 sudo 即可使用的进程。所以我更喜欢这个解决方案,因为它很好,并且会保证之后的兼容性。

            sudo chown -R $USER /usr/local/bin
            sudo chmod -R 0775 /usr/local/bin
            
            sudo chown -R $USER /usr/local/lib/node_modules
            sudo chmod -R 0775 /usr/local/lib/node_modules
            

            如果您安装了新版本的 node.js,您仍然可能会遇到一些错误。尝试删除 npm 缓存:

            sudo npm cache clear
            

            【讨论】:

              【解决方案10】:

              在 sudo 模式下运行代码已经解决了我的问题

              $ sudo npm install -g nativefier

              如果您有相关问题,例如未满足的包依赖项,请查看此link

              【讨论】:

                【解决方案11】:
                sudo npm install -g create-react-app
                

                在nmp install 之前添加sudo 将赋予超级用户运行npm 的特权,并且在它想要更改文件或访问它时不会导致任何错误。嗯,希望对你有帮助!

                【讨论】:

                • 请edit 在您的回答中说明其工作原理以及为什么它是问题中描述的问题的解决方案。见How to Answer。特别是在问题中显示的内容之前添加sudo 不会导致您在此处显示的代码。还请考虑解释与其他现有较旧和类似答案的区别。
                • 我自己不敢尝试sudo,尽管在大多数情况下它似乎对大多数人都有效。简单地添加sudo 来强制运行之前由于缺乏权限而失败的命令是非常危险的,安全方面,因为如果恶意软件设法以某种方式偷偷地与命令一起运行,它将有权访问我们系统的文件。不久前,我在设置新计算机时已成功运行 npm install -g ... 而无需 sudo,因此除非有人交付项目的期限很紧,否则我建议反对尝试此操作。
                【解决方案12】:

                我在输入时遇到了类似的问题:

                npm install -g create-react-app
                

                终端回复:

                npm ERR! code EACCES
                ....
                

                所以我像这样添加“sudo”:

                sudo npm install -g create-react-app
                

                问题解决了!! :-) (所以我同意“chethan chandan”关于使用“sudo”)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-01-12
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-10-20
                  • 2021-11-24
                  • 2020-01-15
                  • 2018-12-28
                  • 2020-07-28
                  相关资源
                  最近更新 更多