Веб-разработка 8 мин чтения

Как исправить ошибку npm ERR! EACCES: Отказано в доступе

Ошибка `npm ERR! EACCES: permission denied` является одной из наиболее распространенных проблем при работе с npm, особенно на Unix-подобных системах (Linux, macOS) и иногда на Windows. Она указывает на то, что npm не име

npmEACCESpermissionsдоступошибкаfixnode.jslinux

Симптомы

  • Сообщения об ошибке в консоли, содержащие "npm ERR! EACCES: permission denied" или "npm ERR! EACCES: Отказано в доступе".
  • Невозможность установить, обновить или удалить npm-пакеты, как глобальные, так и локальные.
  • Проблемы при инициализации новых проектов или выполнении скриптов, требующих записи в директории npm.

Возможные причины

  • Недостаточные права доступа к директориям, используемым npm (например, к глобальной директории пакетов, кэшу npm или директории проекта).
  • Запуск npm команд без прав администратора/суперпользователя, когда это необходимо для доступа к системным директориям.
  • Неправильная конфигурация npm, указывающая на директории, к которым у текущего пользователя нет доступа.
  • Проблемы с владельцем директорий (например, после установки Node.js с правами root или некорректной установки).

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

1

Временное решение: Запуск с повышенными привилегиями

Самый быстрый способ обойти ошибку `EACCES` – это запустить команду npm с правами суперпользователя (для Linux/macOS) или от имени администратора (для Windows). Это временно предоставит npm необходимые права для выполнения операции. Однако, это не рекомендуется для постоянного использования, так как может привести к созданию файлов, принадлежащих root, что вызовет будущие проблемы с разрешениями.

Команда
sudo npm install -g <имя-пакета> (для Linux/macOS)

Для Windows: Запустите командную строку или PowerShell от имени администратора и выполните `npm install -g <имя-пакета>`.
2

Рекомендуемое решение: Изменение владельца глобальной директории npm

Наиболее правильный способ решения проблемы с `EACCES` для глобальных пакетов — это изменить владельца директории, куда npm устанавливает глобальные пакеты, на текущего пользователя. Это позволит вам устанавливать пакеты без `sudo`. 1. **Определите путь к глобальной директории npm:** Выполните команду, чтобы узнать, куда npm устанавливает глобальные пакеты. 2. **Измените владельца этой директории:** * **Для Linux/macOS:** Используйте команду `chown` для изменения владельца директории и всех её поддиректорий на текущего пользователя. * **Для Windows:** Проверьте и измените права доступа к папке, обычно это `C:\Users\<ВашПользователь>\AppData\Roaming\npm` или `C:\Program Files\nodejs\npm` и `C:\Program Files\nodejs\npm_modules`. Убедитесь, что у вашей учетной записи есть полные права на эти папки. Это можно сделать через свойства папки -> вкладка 'Безопасность'.

Команда
npm config get prefix
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
3

Альтернативное решение: Настройка пользовательской директории для глобальных пакетов

Если изменение прав доступа к системным директориям вызывает сложности или нежелательно, можно настроить npm так, чтобы он устанавливал глобальные пакеты в директорию, полностью принадлежащую текущему пользователю. Это полностью обходит проблемы с системными разрешениями. 1. **Создайте новую директорию** для глобальных пакетов, например, в вашей домашней папке: 2. **Настройте npm** использовать эту директорию: 3. **Добавьте эту директорию в переменную окружения `PATH`**, чтобы система могла находить исполняемые файлы глобальных пакетов. Добавьте следующую строку в ваш файл конфигурации оболочки (например, `.bashrc`, `.zshrc`, `.profile`): 4. **Перезагрузите терминал** или выполните `source ~/.bashrc` (или соответствующий файл), чтобы изменения вступили в силу.

Команда
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
4

Комплексное решение: Использование менеджера версий Node.js (nvm, fnm, Volta)

Лучший способ избежать проблем с правами доступа в будущем — это использовать менеджер версий Node.js, такой как `nvm` (Node Version Manager), `fnm` (Fast Node Manager) или `Volta`. Эти инструменты устанавливают Node.js и npm в директории, принадлежащие пользователю, что исключает необходимость в `sudo` для большинства операций и позволяет легко переключаться между разными версиями Node.js. 1. **Удалите существующую установку Node.js и npm** (если она была установлена системно). 2. **Установите выбранный менеджер версий** (например, `nvm`). Инструкции по установке можно найти на официальных страницах проектов. 3. **Используйте менеджер версий для установки Node.js.**

Команда
Пример для nvm (Linux/macOS):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install node
nvm use node

Ошибка npm ERR! EACCES: permission denied является одной из наиболее распространенных проблем при работе с npm, особенно на Unix-подобных системах (Linux, macOS) и иногда на Windows. Она указывает на то, что npm не имеет достаточных прав доступа для выполнения операции, такой как установка, обновление или удаление пакетов, а также для записи в определенные директории. Эта ошибка часто возникает, когда npm пытается записать данные в системные директории, к которым у текущего пользователя нет необходимых привилегий.

Симптомы ошибки

Вы столкнетесь с этой ошибкой, если увидите в консоли сообщения, содержащие:

  • npm ERR! EACCES: permission denied или npm ERR! EACCES: Отказано в доступе.
  • Невозможность установить, обновить или удалить npm-пакеты, как глобальные, так и локальные.
  • Проблемы при инициализации новых проектов или выполнении скриптов, требующих записи в директории npm.

Причины возникновения

Основные причины этой ошибки включают:

  • Недостаточные права доступа: Ключевая причина — у текущего пользователя нет прав на запись или чтение в директориях, которые npm пытается использовать (например, глобальная директория пакетов, кэш npm или директория проекта).
  • Запуск без административных прав: Попытка выполнить команды npm, требующие доступа к системным директориям, без использования sudo (Linux/macOS) или запуска командной строки от имени администратора (Windows).
  • Неправильная конфигурация npm: Возможно, npm настроен на использование директорий, к которым у текущего пользователя нет доступа.
  • Проблемы с владельцем директорий: Иногда после установки Node.js с правами root или некорректной установки, директории npm могут принадлежать пользователю root, что мешает обычным пользователям вносить изменения.

Шаги по устранению ошибки

Шаг 1: Временное решение: Запуск с повышенными привилегиями

Самый быстрый способ обойти ошибку EACCES – это запустить команду npm с правами суперпользователя (для Linux/macOS) или от имени администратора (для Windows). Это временно предоставит npm необходимые права для выполнения операции. Однако, это не рекомендуется для постоянного использования, так как может привести к созданию файлов, принадлежащих root, что вызовет будущие проблемы с разрешениями.

Для Linux/macOS:

sudo npm install -g <имя-пакета>

Для Windows: Запустите командную строку или PowerShell от имени администратора (правой кнопкой мыши по ярлыку -> ‘Запуск от имени администратора’) и выполните:

npm install -g <имя-пакета>

Шаг 2: Рекомендуемое решение: Изменение владельца глобальной директории npm

Наиболее правильный способ решения проблемы с EACCES для глобальных пакетов — это изменить владельца директории, куда npm устанавливает глобальные пакеты, на текущего пользователя. Это позволит вам устанавливать пакеты без sudo.

  1. Определите путь к глобальной директории npm: Выполните команду, чтобы узнать, куда npm устанавливает глобальные пакеты:

npm config get prefix

Обычно это `/usr/local` на Linux/macOS или `C:\Users\<ВашПользователь>\AppData\Roaming\npm` на Windows.

2.  **Измените владельца этой директории:**
*   **Для Linux/macOS:** Используйте команду `chown` для изменения владельца директории и всех её поддиректорий на текущего пользователя. Замените `$(whoami)` на ваше имя пользователя, если вы не уверены.
    ```bash
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Иногда достаточно изменить права только для node_modules и bin:

sudo chown -R $(whoami) $(npm config get prefix)/lib/node_modules
sudo chown -R $(whoami) $(npm config get prefix)/bin
  • Для Windows: Проверьте и измените права доступа к папке, обычно это C:\Users\<ВашПользователь>\AppData\Roaming\npm или C:\Program Files\nodejs\npm и C:\Program Files\nodejs\npm_modules. Убедитесь, что у вашей учетной записи есть полные права на эти папки. Это можно сделать через свойства папки -> вкладка ‘Безопасность’.

Шаг 3: Альтернативное решение: Настройка пользовательской директории для глобальных пакетов

Если изменение прав доступа к системным директориям вызывает сложности или нежелательно, можно настроить npm так, чтобы он устанавливал глобальные пакеты в директорию, полностью принадлежащую текущему пользователю. Это полностью обходит проблемы с системными разрешениями.

  1. Создайте новую директорию для глобальных пакетов, например, в вашей домашней папке:

mkdir ~/.npm-global


2.  **Настройте npm** использовать эту директорию:
```bash
npm config set prefix '~/.npm-global'
  1. Добавьте эту директорию в переменную окружения PATH, чтобы система могла находить исполняемые файлы глобальных пакетов. Добавьте следующую строку в ваш файл конфигурации оболочки (например, .bashrc, .zshrc, .profile):

    export PATH=~/.npm-global/bin:$PATH
  2. Перезагрузите терминал или выполните source ~/.bashrc (или соответствующий файл), чтобы изменения вступили в силу.

Шаг 4: Комплексное решение: Использование менеджера версий Node.js (nvm, fnm, Volta)

Лучший способ избежать проблем с правами доступа в будущем — это использовать менеджер версий Node.js, такой как nvm (Node Version Manager), fnm (Fast Node Manager) или Volta. Эти инструменты устанавливают Node.js и npm в директории, принадлежащие пользователю, что исключает необходимость в sudo для большинства операций и позволяет легко переключаться между разными версиями Node.js.

  1. Удалите существующую установку Node.js и npm (если она была установлена системно). Следуйте инструкциям для вашей операционной системы.
  2. Установите выбранный менеджер версий (например, nvm). Инструкции по установке можно найти на официальных страницах проектов (например, для nvm на GitHub).

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

После установки перезапустите терминал.
3.  **Используйте менеджер версий для установки Node.js.**
```bash
nvm install node
nvm use node

Теперь npm будет работать в пользовательской директории, и проблемы с EACCES должны исчезнуть.

Выбор подходящего решения зависит от вашей операционной системы и предпочтений. Рекомендуется использовать Шаг 2 или Шаг 3 для точечного исправления, или Шаг 4 для более надежного и гибкого управления Node.js и npm.

Источники

  1. github.com — проверено 28.05.2026
  2. github.com — проверено 28.05.2026
  3. github.com — проверено 28.05.2026
  4. github.com — проверено 28.05.2026
  5. github.com — проверено 28.05.2026