在npm install:未处理的拒绝错误:EACCES:权限被拒绝

ser*_*gpa 243 permissions npm

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

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

我已经尝试重新安装node&npm,我也尝试使用这些说明将我的npm缓存重新定位到其他地方,但没有任何作用.

我怎样才能让它运转起来?

SrA*_*Axi 822

像这样给npm的所有权:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
Run Code Online (Sandbox Code Playgroud)

  • 在我尝试了4-5其他不起作用的东西后,这对我有用:1)--unsafe-perm,2)升级npm,3)重启,4)运行sudo等等. (10认同)
  • 对我来说和@AlexYork 一样。我看到我的用户和组已经是这两个的所有者,但我猜一两个子目录有不同的所有者。谢谢! (2认同)
  • 这对我有用,谢谢!我尝试使用npm推荐的节点版本管理器重新安装npm,但是它不起作用! (2认同)

Osa*_*hid 58

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

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


Ryu*_*ent 38

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

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

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
Run Code Online (Sandbox Code Playgroud)

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

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

mkdir ~/.npm-global

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

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

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

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

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

  • 投票支持有关原因的清晰说明:) (2认同)

小智 10

sudo npm cache clean --force --unsafe-perm
Run Code Online (Sandbox Code Playgroud)

然后我会正常


Jun*_*ooq 8

以上答案对我不起作用.试着用你的命令运行--unsafe-perm.

例如

npm install -g node@latest --unsafe-perm
Run Code Online (Sandbox Code Playgroud)

这似乎解决了这个问题.


Jen*_*Lim 6

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

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