Я написал статью об этой проблеме, в которой также рассматриваются некоторые решения по управлению версиями node / npm без использования sudo
: https://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92
Я постараюсь обобщить здесь.
Прежде всего, если вы используете MacOS, я настоятельно рекомендую использовать homebrew для установки системного узла, если вы еще этого не сделали. Вы сможете запускать brew install node
(который также установит npm
и yarn
) без использования sudo, при условии, что вы правильно выполнили настройку homebrew.
Если вы хотите управлять несколькими версиями 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
, имеют возможность запускать произвольные сценарии, в том числе загружаемые из реестр. Вы не хотите давать root-права для чего-то, что запускает произвольные сценарии!