繁体   English   中英

为什么 npm 的一切都需要 sudo?

[英]Why does npm need sudo for EVERYTHING?

我不知道我是如何管理它的,但 npm 似乎绝对每个命令都需要sudo ,即使没有 sudo, npm help也无法工作。 如果我使用不带sudo的命令,我看不到EACCESS错误,而是我的终端会话挂起然后关闭该选项卡(我在 Mac 上使用 iTerm)。

我已经尝试更改我的本地.npm文件夹的所有权,在此处概述,并且还在我的/usr/local/bin文件夹上执行了相同的操作,其中安装了节点,但这些都不允许我在没有sudo的情况下运行 npm,即使在安装本地时也是如此包裹......,在我看来,一路上有什么东西搞砸了? 谁能帮忙?

非常感谢

今天重新安装0.12.4后,我遇到了相同的错误; 这为我解决了问题:

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

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

如果仍不能解决问题,请查看EACCESS错误跟踪中提到的被阻止文件夹的所有权。 如果你不知道的所有权应该是什么样,你通常可以从兄弟迪尔斯的所有权来推断。

我的机器上也有这个。 我所做的修复(可能有很多极端的方法)是完全删除npm,然后从http://nodejs.org/进行了全新的安装node.js(包括npm),确保没有不能以root用户身份安装。 然后,这使我可以在没有root的情况下使用npm(全局安装除外)。

以ember项目为例,我为所有相关项目目录指定根目录:

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
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

使用以下选项。

打开终端并cd到您的Home目录并运行以下命令。

mkdir "${HOME}/.npm-packages"

然后是这个命令。

npm config set prefix "${HOME}/.npm-packages"

接下来,使用open -t.zshrc .zshrc打开 .zshrc 文件并向其中添加以下内容。

NPM_PACKAGES="${HOME}/.npm-packages"

export PATH="$PATH:$NPM_PACKAGES/bin"

# Preserve MANPATH if you already defined it somewhere in your config.
# Otherwise, fall back to `manpath` so we can inherit from `/etc/manpath`.
export MANPATH="${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM