как решить проблему "sudo npm install" на MacOS - PullRequest
2 голосов
/ 07 марта 2019

Некоторое время назад я пытался обновить npm с помощью sudo npm install на моем Mac, поэтому обновление не сработало, и теперь я не могу запустить ни один из моих проектов npm.После этой проблемы я попытался ее решить, поищите ответы на форуме npm и обнаружил, что разработчик сказал: «Никогда не используйте sudo npm install, в частности, на MacOS».так что мой вопрос

  1. как я могу исправить эту проблему, не форматируя мой компьютер, если это возможно
  2. почему использование команды sudo с командой npm является плохой идеей?

Извините за мой плохой английский, но я изо всех сил стараюсь сделать все возможное.спасибо за ваше терпение.

1 Ответ

1 голос
/ 07 марта 2019

Я написал статью об этой проблеме, в которой также рассматриваются некоторые решения по управлению версиями 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-права для чего-то, что запускает произвольные сценарии!

...