【问题标题】:npm WARN checkPermissions Missing write access to /usr/local/lib/node_modulesnpm WARN checkPermissions 缺少对 /usr/local/lib/node_modules 的写访问权限
【发布时间】:2019-03-29 12:20:36
【问题描述】:

注意:出于安全考虑,请不要使用标记的解决方案,而是使用the highest voted one


原始问题:

我正在尝试使用此命令安装 monaca。

npm install -g monaca

但是在收到这些错误之后:

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules 
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'',
npm ERR!   errno: -13, npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }

知道如何解决这个问题吗? 谢谢

【问题讨论】:

标签: javascript reactjs macos npm monaca


【解决方案1】:

在安装 npm 后将以下行添加到 ~/.bashrc:

npm set prefix ~/.npm
PATH="$HOME/.npm/bin:$PATH"
PATH="./node_modules/.bin:$PATH"

更改后执行以下行:

source ~/.bashrc

正如@contemplator 所述,避免使用sudo

【讨论】:

  • 注意:不要使用 sudo 如果使用 Zsh,则在安装 npm 后将上面的行添加到 ~/.zshrc。更改后执行以下行:source ~/.zshrc
  • 更类似于 zshrc 的方式是 npm set prefix ~/.npm; path+=$HOME/.npm/bin; path+=./node_modules/.bin(使用 path+= 而不是像在 bash 中那样将现有路径附加到每一行)
【解决方案2】:

注意:强烈建议避免将sudo 与 npm 一起使用!

不推荐使用 sudo。它可能会在以后给您权限问题。虽然上述方法有效,但请使用 these instructions 永久解决您的问题。

【讨论】:

  • 另外,使用 sudo 运行不受信任的代码,一些 Rando 上传到 npm,在您的系统上具有 root 权限。
【解决方案3】:

对于上面告诉不要使用 sudo 的所有警告,我会添加以下解决方案,在安装 n, node version manager 时对我来说效果很好

sudo chown -R $USER /usr/local/lib/node_modules

取自这里:https://poopcode.com/missing-write-access-to-usr-local-lib-node-modules/

PS:对于我的特定用例,我还需要在之后运行这个

sudo chown -R $USER /usr/local/bin/

【讨论】:

    【解决方案4】:

    此命令将递归更改指定目录中当前用户的所有者(chown)(-R)

    sudo chown -R $USER /usr/local/lib/node_modules
    

    【讨论】:

    • 如果你在你的答案中加上解释,答案会大大改善
    【解决方案5】:

    好吧,我使用--save-dev 并没有全局安装它或使用-g,主要问题发生在您希望它写入默认node_modules 文件夹时。

    在检查多个问题 4 小时后,它解决了我的问题。

    我什至建议您使用npm init 并创建一个package.json 以进行更好的依赖关系检查,然后再安装run npm。这个视频可以帮助你解决这个问题https://www.youtube.com/watch?v=rTsz09zRuTU

    【讨论】:

      【解决方案6】:

      不要使用sudo

      我不知道您的环境上下文,但我在运行 Plesk 的服务器上遇到了错误。

      也许以下命令将有助于(通过 SSH)检查权限:

      plesk repair fs example.com.

      手册:https://docs.plesk.com/en-US/12.5/administrator-guide/plesk-administration/plesk-repair-utility/plesk-repair-utility-file-system.74668/

      在我的例子中,node_modules 文件夹是通过 FTP 复制的,因此它有错误的更正。如有必要,您可以删除它并通过 Plesk 使用 Npm installation 按钮安装它。

      信息:该按钮仅在文档包含带有信息的package.json 时出现。

      【讨论】:

        【解决方案7】:

        这很简单 你可以使用

        sudo npm install -g kazam

        苏-

        然后

        npm install -g kazam

        解释

        su -
        

        让你成为root,拥有对所有用户的读、写和删除权限 click here for the screen shot showing the error and the solution in the update of npm

        this is for ubuntu i don't know is it work for other os
        

        【讨论】:

          【解决方案8】:

          解决此问题的不明智的方法是使用 sudo:

          sudo npm install -g monaca
          

          但是最好在不使用 sudo 的情况下找到解决此问题的方法。

          npm install -g less does not work

          【讨论】:

          • 请提供完整的基于权限的最终修复,而不仅仅是 sudo 的事情
          • 不要将sudonpmtry this一起使用
          • 你只是说这是不可取的 - 所以不要成为问题的一部分并给出建议。
          • 这当然会工作一次,但 npm 不会正常工作
          猜你喜欢
          • 2019-07-15
          • 2022-01-15
          • 1970-01-01
          • 2018-08-01
          • 1970-01-01
          • 2020-10-25
          • 2020-09-05
          • 2021-02-09
          • 1970-01-01
          相关资源
          最近更新 更多