【问题标题】:npm install -g less does not work: EACCES: permission deniednpm install -g less 不起作用:EACCES:权限被拒绝
【发布时间】:2016-02-16 23:26:07
【问题描述】:

我正在尝试在 phpstorm 上设置 less,以便在保存时将 .less 文件编译为 .css。我已经安装了node.js,下一步(根据这个https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html)在终端中运行这个命令

npm install -g less

但是,当我这样做时,我会收到这些错误

☁  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
  │ └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
  │ └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
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!     at Error (native)
npm ERR!  { [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' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

我在这里完全是个菜鸟,不知道下一步该做什么。任何帮助将不胜感激!

【问题讨论】:

    标签: node.js npm terminal


    【解决方案1】:

    我也遇到了同样的问题。 更新 npm 对我也不起作用,所以我决定重新安装它。

    对我有用的是从我的系统中卸载节点。

    sudo apt-get remove nodejs    
    sudo apt-get remove npm
    

    更新后重新安装。

    sudo apt-get update
    sudo apt install npm
    

    【讨论】:

      【解决方案2】:

      您可以使用此命令和root密码来为node_module文件夹添加写入权限:

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

      【讨论】:

        【解决方案3】:

        尝试使用sudo 安装。我在全局安装 npm 包时遇到了类似的问题。出现此问题是因为当前用户没有对目录进行更改的写入权限。

        没用

        npm i -g vsce 
        

        工作

        sudo npm i -g vsce
        

        【讨论】:

          【解决方案4】:

          你可以用 sudo 试试,像下面这样

          sudo npm install -g less
          

          如果不行,可以参考这个链接 https://ionicframework.com/docs/developing/tips#resolving-permission-errors

          【讨论】:

            【解决方案5】:

            sudo chown -R $USER /usr/local/lib/node_modules 此命令将起作用

            【讨论】:

              【解决方案6】:

              我已经尝试了所有建议的解决方案,但没有任何效果。

              我使用的是 macOS Catalina 10.15.3

              转到 /usr/local/

              选择 bin 文件夹 > 获取信息

              将您的用户添加到共享和权限。 读取和写入权限。

              然后转到终端并运行 npm install -g @ionic/cli

              它帮助了我。

              【讨论】:

              • 在终端中打开该目录写入open /usr/local/lib/
              • 我不会推荐它。
              【解决方案7】:

              使用sudo -i切换到$root,然后执行npm install -g xxxx

              【讨论】:

                【解决方案8】:

                另一种选择是使用安装程序下载并安装新版本。

                https://nodejs.org/en/download/

                【讨论】:

                  【解决方案9】:

                  在 linux 中确保获得所有权限:

                  sudo su
                  

                  【讨论】:

                    【解决方案10】:

                    对于我的mac环境

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

                    解决问题

                    【讨论】:

                    • 我相信上面@VagnerRodrigues 的回答已经涵盖了这一点。
                    • 是的,我刚才提到了mac环境
                    【解决方案11】:

                    Mac OS X 答案

                    您没有对 node_modules 目录的写入权限

                    npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
                    

                    将您的用户添加到具有写入权限的目录

                    1. 打开包含 node_modules 的文件夹

                      打开 /usr/local/lib/

                    2. 在 node_modules 文件夹上执行 cmd+I 打开权限对话框
                    3. 在共享和权限部分添加您的用户以具有读写权限

                    【讨论】:

                    • MacOS 最简单高效的解决方案
                    • 漂亮的答案:D
                    • 在终端中打开该目录写入open /usr/local/lib/
                    • 这只会改变 node_modules 文件夹的权限,而不是里面的所有文件夹,这使得这些步骤几乎没有用。
                    【解决方案12】:

                    不推荐使用 sudo。它可能会在以后给您权限问题。 虽然上述方法有效,但我不喜欢将 root 拥有的文件夹更改为对用户可写,尽管这可能只是多个用户的问题。 要解决这个问题,您可以使用带有“npm users”的组,但这也是更多的管理开销。 有关处理文档中权限的选项,请参见此处: https://docs.npmjs.com/getting-started/fixing-npm-permissions

                    我会选择选项 2:

                    为了尽量减少权限错误的机会,您可以将 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
                    

                    如果仍然显示权限错误运行(mac os):

                    sudo chown -R $USER ~/.npm-global   
                    

                    这适用于默认的 ubuntu 安装:

                    sudo apt-get install nodejs npm
                    

                    如果您想更灵活地管理版本,我推荐nvmhttps://github.com/creationix/nvm

                    在 MacOS 上使用 brew,如果您使用的是最新的 npm 版本,它应该可以在没有开箱即用的 sudo 的情况下工作。 享受:)

                    【讨论】:

                    • 请注意——在 Ubuntu 18.04 上,我必须注销并重新登录,然后才能自动应用所有新的终端窗口。
                    • Alexander,你确定你使用了 source 命令吗?这应该注意设置正确的环境变量,不需要注销(但可以)。
                    • 感谢这个“在 MacOS 上使用 brew”
                    • 这甚至适用于npm i -g yarn...sudo chown... 方法不适用于那个
                    • 我真的不敢相信像npm i -g something 这样简单的东西对数百万人不起作用,人们谷歌和一些解决方案说使用sudo,有人说sudo 是危险的并使用黑客和用户猜测什么可能是好的,并输入他们不理解且不知道安全后果的任何内容。这就是我们现在的工程状态?
                    【解决方案13】:

                    使用 Node Version Manger(根据written in npm documentation)重新安装 node 和 npm 以避免权限错误:

                    在 OSX 中:

                    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
                    

                    或关注这篇文章:

                    http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

                    Windows 用户应安装nvm-windows。 有关如何安装 nvm 的更多帮助,请参阅nvm readme

                    然后选择例如:

                    nvm install 8.0.0
                    nvm use 8.0
                    

                    现在你可以再试一次:

                    npm install -g less
                    

                    【讨论】:

                    • 我用它来解决在 CodeSandbox 上安装包的权限问题。
                    【解决方案14】:

                    在终端窗口中运行这些命令(注意:不要替换 $USER 部分...这是获取用户的 linux 命令!):

                    sudo chown -R $USER ~/.npm
                    sudo chown -R $USER /usr/lib/node_modules
                    sudo chown -R $USER /usr/local/lib/node_modules
                    

                    【讨论】:

                    • 让自己成为/usr 中事物的所有者是个好主意吗?如果其他人想安装节点的东西怎么办?
                    • 在 macOS High Sierra 上为我工作,我只需要三个命令之一:sudo chown -R $USER /usr/local/lib/node_modules。 @Mark 这是真的,但如果你只有一个用户当然没问题。
                    • @FabianvonEllerts 好吧,意外删除系统文件仍然更容易,因为您不再需要 sudo ......即使独自一人,我也会遵循最佳实践,但这当然取决于您.
                    • 我支持 Mark,除非您有一个用户(即使那样),否则您不希望 /usr 子目录归一个用户所有,在这种情况下,最好使用该组。但也许更好,就像我在回答中提到的那样使用 brew ,它可以在没有 root 的情况下工作。
                    • 此方法不适用于npm i -g yarn
                    猜你喜欢
                    • 2018-03-08
                    • 2018-03-01
                    • 2018-11-11
                    • 2019-09-24
                    • 1970-01-01
                    • 2019-10-28
                    • 2018-04-04
                    • 1970-01-01
                    • 2017-12-29
                    相关资源
                    最近更新 更多