如何解决 MacOS 上的 "sudo npm install" 个问题

how resolve "sudo npm install" issues on MacOS

前段时间我尝试在 Mac 上使用 sudo npm install 更新 npm, 所以更新没有用,现在我不能 运行 我的任何 npm progects。 在这个问题之后,我试图解决它,在 npm 论坛上搜索了一些答案,我发现了一个开发人员说 "never use sudo npm install, in particular on MacOS" 的讨论。 所以我的问题是

  1. 如何在不格式化电脑的情况下解决这个问题
  2. 为什么将 sudo 与 npm 命令一起使用是个坏主意?

对不起我的英语不好,但我会努力做到最好。 感谢您的耐心等待。

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

我会在这里总结一下。

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

如果你想管理多个版本的Node,我强烈推荐https://github.com/tj/n as a tool. nvm is also very popular, but I prefer n. I walk through how to install and manage n in my article, but someone has also created a tool to help you through this: 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 (without sudo)。

同样,如果您全局安装了带有错误前缀的节点模块,您可能必须执行类似于 sudo rm -rf $(npm prefix -g)/{bin,lib/node_modules} 的操作。请注意,此 删除您之前使用 sudo 安装的库,因此您将不得不重新安装它们。

除了您 运行 遇到的问题之外,您不应该使用 sudo npm 任何东西的一个关键原因是 npm 命令包括 install能够 运行 任意脚本,包括从注册表下载的脚本。您不想为 运行 任意脚本的东西授予 root 权限!