使用nvm时sudo无法使用npm

9
我已经按照nvm文档安装了node/npm。

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

然后我安装了它:

nvm install stable

然后我需要执行:

nvm use node

npm可以工作,但如果我想要全局安装一个软件包,则无法正常工作。

sudo npm install -g package

我得到了这个错误:

sudo: npm: command not found

我看了很多主题,但我真的不太理解符号链接或类似这样的东西。 我正在使用ubuntu 14.04。
3个回答

9

nvm维护者在此 - 使用http://nvm.sh,您永远不需要使用sudo。

此外,nvm是每个用户的 - 这意味着,sudo用户将不会在其shell环境中拥有它,并且其PATH也无法正确设置。

只需执行npm install -g package,它就可以完美运行 :-)

另外,如果您执行nvm alias default node,则每次打开新的shell时都不必执行nvm use


3
如果我不需要使用sudo,我该如何解决这个问题:在我的主目录下访问.npm时出现错误:EACCES:权限被拒绝。 - BoumTAC
在使用 nvm 之前,您可能已经使用 sudo 安装了 node/npm。我的建议是使用 sudo chown 命令将您的整个主目录所有权归属于您自己,并卸载系统版本的 node/npm。 - LJHarb
@LJHarb npm start需要管理员权限,但不能使用sudo运行。那么该怎么办呢? - bazi
@bazi 为什么 npm start 需要管理员权限?也许 https://thomashunter.name/blog/using-authbind-with-node-js/ 对你有帮助。 - LJHarb
我需要sudo,因为“npm install -g package”不能解决我的问题,而我需要在特定目录中执行“npm i package”。 - Calion
然后在那里放置一个 package.json 文件,npm install 将会安装它到该目录的 node_modules 中。如果您试图以与 Node 生态系统约定不符的方式设置包,您将会遇到麻烦。 - LJHarb

0
为什么不将全局软件包安装为普通用户呢?
npm install -g package

1
因为我在尝试访问我的主目录中的 .npm 时遇到了错误:EACCES:权限被拒绝。 - BoumTAC
因为之前使用sudo创建了它,所以尝试删除该文件夹(只需将其重命名),然后执行各种“npm install -g package”。 - DevAlien

-1

我在这个主题中找到了答案。

这是因为我使用sudo安装它。 我必须执行这些命令:

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

现在它可以工作了


在使用 nvm 时,也不应该使用 /usr/local/lib/node_module。你的 ~/.npmrc 中是否设置了 prefix?如果是,请将其删除。 - LJHarb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接