Как исправить ошибку запуска NPM без sudo?
Если вы сталкиваетесь с ошибками при использовании npm без sudo, это может быть связано с проблемами с разрешениями. Обычно это происходит, когда npm пытается установить пакеты или изменить файлы в каталогах, где у текущего пользователя недостаточно разрешений. Выполнение команд npm с помощью sudo повышает привилегии и позволяет npm выполнять требуемые операции, но это может привести к уязвимостям в системе безопасности и неожиданному поведению вашего проекта. В этом руководстве мы рассмотрим различные способы устранения ошибок, связанных с правами доступа npm, без использования sudo.
Исправление ошибки запуска NPM без использования sudo
Мы можем исправить ошибки с правами доступа npm многими способами, такими как установка Node.js с помощью NVM, управление разрешениями для каталога и глобальная переустановка модуля NPM с правами root. Давайте рассмотрим каждый из них подробно, один за другим.
1. Установка Node.js с помощью NVM
NVM (Node Version Manager) - это инструмент, который позволяет разработчикам устанавливать столько версий Node, сколько им требуется, не имея прав суперпользователя. Прежде чем выполнять описанные ниже действия, удалите текущую установку NPM.
- Чтобы удалить все глобальные модули Node, выполните в терминале следующую команду:
npm uninstall -g $(npm ls -g --depth=0 | awk '/\/npm\// {print $1}')
Это гарантирует отсутствие конфликтующих пакетов перед установкой Node.js с помощью NVM.
Далее выполните следующие действия, чтобы установить NVM в вашей системе.
- Чтобы установить NVM, запустите следующую команду в вашем терминале:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
Приведенная выше команда загрузит и выполнит установочный скрипт NVM, а также настроит NVM в вашей системе.
После того, как вы установили NVM, закройте и снова откройте свой терминал, чтобы убедиться, что изменения произошли. Этот шаг важен для определения терминалом команды NVM.
- Убедитесь, что NVM установлен правильно, выполнив:
nvm --version
Если он был установлен, вы увидите версию nvm в качестве выходных данных на консоли
- Чтобы установить node после установки NVM, выполните следующую команду:
nvm install stable
Когда вы закончите с вышеизложенным, попробуйте выполнить npm link
или глобальную установку NPM, и вы увидите, что для работы больше не требуются права root.
2. Управление разрешениями
Изменение владельца гарантирует, что у вас есть необходимые разрешения для работы с пакетами и каталогами npm. Это может устранить ошибки, связанные с разрешениями, при использовании npm.
Для этого выполните следующие действия:
- Откройте приложение терминала.
- Выполните приведенную ниже команду, которая сделает вас владельцем всех папок в
~/.npm
.
sudo chown -R $(whoami) ~/.npm-global
При появлении запроса введите свой системный пароль для авторизации смены владельца. После этого попробуйте установить или выполнить поиск в NPM еще раз и проверьте, не устранена ли проблема. Если проблема не устраняется, рассмотрите возможность использования приведенного ниже решения.
3. Глобальная переустановка модулей NPM с правами суперпользователя
Настроив npm для выполнения глобальной установки для конкретного пользователя без использования sudo, вы можете избежать проблем с правами доступа и обеспечить бесперебойную установку пакетов npm.
- Создайте каталог для глобальных пакетов.:
$ mkdir "${HOME}/.npm-packages"
- Добавьте это в конец файла
~/.npmrc
:
prefix=${HOME}/.npm-packages
- Затем перейдите к файлам
.bashrc
или.zshrc
и добавьте:
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
unset MANPATH
export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
После этого, когда вы устанавливаете пакеты npm глобально с помощью -g
, их можно запускать из командной строки без использования sudo.
Вывод
Следуя шагам, описанным в этом руководстве, вы сможете успешно отлаживать npm, не полагаясь на sudo, обеспечивая бесперебойную и безопасную разработку. Независимо от того, устанавливаете ли вы Node.js с помощью NVM, получаете доступ к соответствующим каталогам или управляете глобальными пакетами npm, эти решения не позволяют разработчикам решать проблемы, связанные с правами доступа, и оптимизировать свои среды разработки. Мы надеемся, что вам понравилось.