之前我在Mac上尝试使用sudo npm install
更新npm,但更新没有成功,现在我无法运行任何npm项目。 在这个问题之后,我尝试在npm论坛上寻找答案,并发现了一个讨论,其中一位开发者说“不要在MacOS上使用sudo npm install
”。 所以我的问题是:
- 如果可能的话,如何在不格式化计算机的情况下解决此问题?
- 为什么使用sudo命令和npm一起使用是一个坏主意?
非常抱歉我的英语不好,但我会尽力而为,感谢您的耐心。
之前我在Mac上尝试使用sudo npm install
更新npm,但更新没有成功,现在我无法运行任何npm项目。 在这个问题之后,我尝试在npm论坛上寻找答案,并发现了一个讨论,其中一位开发者说“不要在MacOS上使用sudo npm install
”。 所以我的问题是:
非常抱歉我的英语不好,但我会尽力而为,感谢您的耐心。
我写了一篇关于这个问题的文章,介绍了一些管理node/npm版本的解决方案,而不使用sudo
:https://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92
我会在这里简要总结一下。
首先,如果你正在使用MacOS,我强烈建议使用homebrew安装系统节点,如果你还没有这样做的话。假设你已经正确设置了homebrew,你应该能够运行brew install node
(这也将安装npm
和yarn
)而不需要使用sudo。
nvm
也很受欢迎,但我更喜欢n
。在我的文章中,我详细介绍了如何安装和管理n
,但也有人创建了一个工具来帮助你完成这个过程:https://github.com/mklement0/n-install。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
,具有运行从注册表下载的任意脚本的能力。您不想将根权限授予运行任意脚本的东西!