如何解决MacOS上的“sudo npm install”问题

3

之前我在Mac上尝试使用sudo npm install更新npm,但更新没有成功,现在我无法运行任何npm项目。 在这个问题之后,我尝试在npm论坛上寻找答案,并发现了一个讨论,其中一位开发者说“不要在MacOS上使用sudo npm install”。 所以我的问题是:

  1. 如果可能的话,如何在不格式化计算机的情况下解决此问题?
  2. 为什么使用sudo命令和npm一起使用是一个坏主意?

非常抱歉我的英语不好,但我会尽力而为,感谢您的耐心。

1个回答

1

我写了一篇关于这个问题的文章,介绍了一些管理node/npm版本的解决方案,而不使用sudohttps://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92

我会在这里简要总结一下。

首先,如果你正在使用MacOS,我强烈建议使用homebrew安装系统节点,如果你还没有这样做的话。假设你已经正确设置了homebrew,你应该能够运行brew install node(这也将安装npmyarn)而不需要使用sudo。

如果你想管理多个版本的Node,我强烈推荐使用https://github.com/tj/n这个工具。虽然nvm也很受欢迎,但我更喜欢n。在我的文章中,我详细介绍了如何安装和管理n,但也有人创建了一个工具来帮助你完成这个过程:https://github.com/mklement0/n-install
你还可以查看我2015年关于同一主题的文章的这部分内容,以便帮助你解决可能由于之前运行sudo npm install而导致的问题。你可以尝试在项目中运行sudo rm -rf node_modules,然后再运行npm install不需要sudo)。
同样地,如果您使用了错误的前缀全局安装了节点模块,您可能需要执行类似于sudo rm -rf $(npm prefix -g)/{bin,lib/node_modules}的操作。请注意,这将删除您之前使用sudo安装的库,因此您需要重新安装它们。
除了您遇到的问题外,不应该使用sudo npm的一个关键原因是npm命令,包括install,具有运行从注册表下载的任意脚本的能力。您不想将根权限授予运行任意脚本的东西!

@MiladRezazadeh 你后悔运行了哪个命令?如果你对我的回答进行了负评,也许有一些误解我可以澄清。 - Explosion Pills

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