как устранить проблемы с установкой sudo npm в macOS

#node.js #macos #npm #installation #sudo

#node.js #macos #npm #установка #sudo

Вопрос:

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

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

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

Ответ №1:

Я написал статью об этой проблеме, в которой также рассматриваются некоторые решения для управления версиями node / npm без использования sudo :https://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92

Я попытаюсь подвести итог здесь.

Прежде всего, если вы используете macOS, я настоятельно рекомендую использовать homebrew для установки system node, если вы еще этого не сделали. Вы должны быть в состоянии запустить 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-права чему-либо, что запускает произвольные скрипты!

Комментарии:

1. @MiladRezazadeh о выполнении какой команды вы жалеете? В случае, если вы отклонили мой ответ, возможно, возникло недоразумение, которое я могу прояснить.