npm LinuxWindowsmacOS

npm ERR! EACCES permission denied при глобальной установке

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Настройте префикс npm в домашней папке или используйте nvm; не используйте sudo.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Менеджер версий nvm
  5. Свой префикс
  6. Если ошибка в проекте
  7. Проверка результата
  8. Где скачать и что открыть

#Что означает ошибка

Сообщение
EACCES

EACCES при npm install -g возникает, когда глобальный каталог пакетов находится в системной папке (например, /usr/local/lib/node_modules), а у обычного пользователя нет прав на запись. Многие советуют просто запускать npm с sudo, но это небезопасно: скрипты установки пакетов выполняются с правами root, а файлы в вашем профиле потом принадлежат root.

Правильный подход — не устанавливать глобальные пакеты в системные каталоги: использовать менеджер версий Node.js (nvm, fnm, volta) либо настроить собственный префикс в домашней папке.

Настройте префикс npm в домашней папке или используйте nvm; не используйте sudo.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Системный каталогПрава.Проявляется как «EACCES» или близкий по смыслу сбой.Смените prefix.
Установка через sudoРиск.Проявляется как «EACCES» или близкий по смыслу сбой.Используйте nvm.
Кэш npmВладелец.Проявляется как «EACCES» или близкий по смыслу сбой.chown.
Каталог проектаПрава.Проявляется как «EACCES» или близкий по смыслу сбой.Исправьте.

#Пошаговое решение

  1. Определите, куда npm пытается записать файлыВ терминале Linux/macOS выполните npm config get prefix и npm config get cache, затем проверьте владельца именно указанных каталогов. Ошибка EACCES при npm install -g обычно связана с системной папкой установки. Не используйте sudo npm install -g как постоянную практику.
  2. Предпочтительно используйте менеджер версий NodeДля личной учётной записи изучите официальный nvm (Linux/macOS) или другой поддерживаемый менеджер версий. Прочитайте установочный сценарий из официального репозитория до запуска и установите рекомендованную поддерживаемую версию Node; после входа в новый терминал проверьте node -v, npm -v и путь npm.
  3. Альтернатива: задайте пользовательский prefixНа Linux/macOS создайте каталог mkdir -p "$HOME/.npm-global", выполните npm config set prefix "$HOME/.npm-global"; добавьте $HOME/.npm-global/bin в PATH через конфигурацию используемой оболочки (для zsh — ~/.zshrc, для bash — соответствующий файл профиля). Это альтернатива nvm, а не обязательный дополнительный шаг.
  4. Проверьте запись без расширения системных правОткройте новый терминал, проверьте npm config get prefix и command -v npm, затем запустите ранее неудавшуюся установку. Если EACCES возникает в кэше, изменяйте владельца только собственной папки .npm после осмотра её содержимого; не применяйте рекурсивный chown ко всему дому или системным каталогам.

#Менеджер версий nvm

Установите nvm, затем выполните nvm install --lts. Node и все глобальные пакеты окажутся в вашем домашнем каталоге (~/.nvm), права не нужны, а версии переключаются командой nvm use. Это решение рекомендуется официально для разработки.

#Свой префикс

Создайте каталог ~/.npm-global, выполните npm config set prefix ~/.npm-global и добавьте ~/.npm-global/bin в PATH (файл ~/.profile или ~/.zshrc). После этого глобальные установки идут в ваш каталог без sudo.

#Если ошибка в проекте

Если файлы кэша npm принадлежат root после прежних запусков sudo, администратор должен проверить владельцев и исправить их только внутри конкретной пользовательской папки кэша. Не используйте рекурсивную смену владельца всего проекта или домашнего каталога как универсальное решение.

Linux · Терминал (Bash)Команда
Настройка собственного глобального каталога npm.
npm config get prefix
npm config get cache

#Проверка результата

Выполните npm config get prefix и убедитесь, что путь указывает в домашний каталог. Затем установите любой глобальный пакет, например npm install -g npm-check-updates, и проверьте, что он запускается из терминала. Если команда не найдена, откройте новый терминал: переменная PATH применяется только к новым сеансам.

#Где скачать и что открыть

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.