不久前,我尝试在 Mac 上使用 sudo npm install
更新 npm,
所以更新不起作用,现在我无法运行任何 npm 项目。
在这个问题之后,我试图解决它,在 npm 论坛上搜索一些答案,并且我发现了一个讨论,其中开发人员说“永远不要使用 sudo npm install,特别是在 MacOS 上”。
所以我的问题是
- 如果可能的话,如何在不格式化电脑的情况下解决此问题
- 为什么将 sudo 与 npm 命令一起使用是一个坏主意?
我很抱歉我的英语不好,但我会努力做到最好。 感谢您的耐心等待。
最佳答案
我写了一篇关于这个问题的文章,其中还介绍了一些在不使用 sudo
的情况下管理 Node/npm 版本的解决方案:https://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92
我会尝试在这里总结一下。
首先,如果您使用的是 MacOS,我强烈建议使用 homebrew如果您还没有安装系统 Node ,请执行此操作。假设您已经完成了自制程序,您应该能够运行 brew install node
(它还将安装 npm
和 yarn
),而无需使用 sudo正确设置。
如果你想管理多个版本的 Node,我强烈推荐 https://github.com/tj/n作为一种工具。 nvm
也很流行,但我更喜欢 n
。我在文章中介绍了如何安装和管理 n
,但有人还创建了一个工具来帮助您完成此操作:https://github.com/mklement0/n-install .
您还可以查看this part of my 2015 article on the same topic可能会帮助您解决过去运行 sudo npm install 时可能遇到的问题。您可以在项目中尝试 sudo rm -rf node_modules
,然后尝试 npm install
(不使用 sudo)。
同样,您可能需要执行类似于 sudo rm -rf $(npm prefix -g)/{bin,lib/node_modules}
的操作,以防您全局安装带有错误前缀的 Node 模块。请注意,这将删除您之前使用 sudo 安装的库,因此您必须再次安装它们。
除了您遇到的问题之外,您不应该使用 sudo npm
任何东西的一个关键原因是 npm
命令包括 install
能够运行任意脚本,包括从注册表下载的脚本。您不想向运行任意脚本的程序授予 root 权限!
关于node.js - 如何解决 MacOS 上的 "sudo npm install"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047241/