npm install -g less不起作用:EACCES:权限被拒绝


202

我试图减少对phpstorm的设置,以便可以在保存时将.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

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

Answers:


353

不建议使用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

我建议nvm您在管理版本时是否需要更大的灵活性:https : //github.com/creationix/nvm

在MacOS上使用brew,sudo如果您使用的是最新npm版本,则应立即使用它。请享用 :)


注意-在Ubuntu 18.04上,我必须先注销然后重新登录,然后所有新的终端窗口也会自动应用更改。
亚历山大·尼德

亚历山大,您确定使用源命令了吗?那应该注意设置正确的环境变量,不需要注销(但可以)。
文森特·格里斯

这没用$ npm install -g jshint npm ERR!结束后写npm ERR!可以在以下位置找到此运行的完整日志:npm ERR!/home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith '19

3
感谢名单对于这种“在MacOS上使用酿造”
Bijender辛格谢卡瓦特

110

在终端窗口中运行以下命令(注意:不要替换$ USER部分...多数民众赞成在Linux命令中获得您的用户!):

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

7
让自己成为其中事物的所有者是一个好主意/usr吗?如果其他人想安装节点东西怎么办?
标记

6
在macOS High Sierra上为我工作时,我只需要三个命令之一:sudo chown -R $USER /usr/local/lib/node_modules。@Mark是的,但是如果您只有一个用户,那当然没问题。
Fabian von Ellerts

@FabianvonEllerts嗯,意外删除系统文件还是比较容易的,因为您不再需要sudo了……即使只是一个人,我也将遵循最佳实践,但这当然取决于您。
标记

我与Mark在一起,除非您只有一个用户(甚至那时),否则您不希望一个用户拥有/ usr子目录,在这种情况下,最好使用该组。但也许更好,只需使用我在回答中提到的brew,它就可以在没有root权限的情况下工作。
文森特·格里斯

11

使用Node Version Manger重新安装node和npm (按照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自述文件

然后选择例如:

nvm install 8.0.0
nvm use 8.0

现在您可以再尝试一次:

npm install -g less

1
我用它来解决在CodeSandbox上安装软件包的权限问题。
基思·泰勒

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最简单,最有效的解决方案
itsazzad



3

只需点击以下命令:

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

让我们分解一下:

须藤

表示我们以root(系统超级用户)身份运行此命令。这是因为我们没有写该文件夹的权限,但是root可以修复任何权限。此命令还意味着系统将要求您输入密码以进行确认。

wn

是用于更改文件或文件夹所有者的命令。我们设置-R选项以递归方式更改所有者,因此我们也可以使所有者访问那里已经包含的所有文件。

$ USER

是自动设置为您的用户名的环境变量。

最后一块是文件夹路径。

运行此路径将使该文件夹成为您的文件夹,因此您可以安全地运行npm install -g命令!


0

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

我正在使用macOS Catalina 10.15.3

转到/ usr / local /

选择bin文件夹>获取信息

将您的用户添加到共享和权限。读写权限。 在此处输入图片说明

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

它帮助了我。


-1

在Linux中,请确保获得所有权限:

sudo su


-3

嗨,我正在使用Ubuntu 18,在安装Prisma时也收到了此错误消息,然后我只是sudo在前面添加

sudo npm i -g prisma
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.