#node.js #macos #npm #installation #sudo
#node.js #macos #npm #установка #sudo
Вопрос:
Некоторое время назад я пытался обновить npm с помощью sudo npm install
на своем Mac, поэтому обновление не сработало, и теперь я не могу запустить ни один из моих npm-проектов. после этой проблемы я попытался ее решить, поискав ответы на форуме npm, и я нашел обсуждение, в котором разработчик сказал «никогда не используйте sudo npm install
, в частности, на macOS». итак, мой вопрос
- как я могу решить эту проблему, не форматируя свой компьютер, если это возможно
- почему использование 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 о выполнении какой команды вы жалеете? В случае, если вы отклонили мой ответ, возможно, возникло недоразумение, которое я могу прояснить.