为什么npm需要sudo一切?

时间:2013-11-21 07:28:01

标签: macos node.js shell npm

我不知道我是如何管理它的,但是npm似乎需要sudo来完全支持所有命令,即使没有sudo,npm help也行不通。如果我使用没有sudo的命令,我看不到EACCESS错误,而是我的终端会话挂起然后关闭该选项卡(我在Mac上使用iTerm)。

我尝试更改本地.npm文件夹的所有权,概述了here,并且在安装了节点的/usr/local/bin文件夹中也做了同样的事情,但这些都不允许我这样做在没有sudo的情况下运行npm,即使安装本地软件包......!在我看来,有什么东西搞砸了,有人可以帮忙吗?

非常感谢

3 个答案:

答案 0 :(得分:2)

我今天全新安装0.12.4后遇到了同样的错误;这解决了我的问题:

sudo chown -R $(whoami):admin /usr/local/lib/node_modules

在我的特定情况下,我注意到这个文件夹归'{some-large-integer-account}:wheel'所有...... YMMV

如果仍无法解决问题,请查看EACCESS错误跟踪中提到的被阻止文件夹的所有权。如果您不确定应该的所有权,您通常可以从兄弟姐妹的所有权中推断出来。

答案 1 :(得分:0)

我的机器上也有这个。我做了什么来解决它(可能有更少的极端方法)是完全删除npm,然后从http://nodejs.org/做了一个全新的安装node.js(包括npm)确保我没有安装作为根。然后,这允许我使用没有root的npm(全局安装除外)。

答案 2 :(得分:0)

以ember项目为例,我给出了所有相关的项目目录root:

neil@neil-System-Product-Name:~/Projects/ember-quickstart$ sudo chown -R $(whoami) /home/neil/Projects/ember-quickstart/ neil@neil-System-Product-Name:~/Projects/ember-quickstart$ ember s Could not start watchman Visit https://ember-cli.com/user-guide/#watchman for more info. Livereload server on http://localhost:7020 Build successful (10679ms) – Serving on http://localhost:4200/ Slowest Nodes (totalTime => 5% ) | Total (avg)
----------------------------------------------+--------------------- Babel (18) | 7561ms (420 ms)
Concat (8) | 1872ms (234 ms)
Rollup (1) | 629ms