#Как проявляется ошибка и когда применим способ
Ошибка EACCES при записи npm в собственный кеш означает, что текущий пользователь не имеет доступа к конкретному пути кеша. Это отдельная неисправность от отказа в доступе при глобальной установке пакетов.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Кеш принадлежит другой учётной записиРанее npm запускали от другого пользователя или через sudo. | В ошибке указан путь внутри кеша и отказ в записи. | Использовать кеш текущего пользователя, исправить только его права. |
| Не тот путь кешаNPM_CONFIG_CACHE или npmrc направляет кеш в защищённую папку. | npm config get cache показывает чужой или системный каталог. | Задать безопасный пользовательский каталог. |
#Пошаговая диагностика и решение
- 1. Уточните, где именно отказано в доступеВ терминале под обычной учётной записью скопируйте из текста EACCES полный путь к файлу. Если он относится к node_modules или /usr/local, это другая ошибка, здесь рассматриваем только кеш. Не выполняйте установку от администратора, чтобы «победить» ошибку.
- 2. Посмотрите расположение кеша и владельцаНа Linux/macOS выполните npm config get cache и затем ls -ld для показанного пути, заменив ПУТЬ_КЕША. На Windows откройте Проводник, вставьте показанный путь в адресную строку и проверьте свойства папки → Безопасность. Убедитесь, что работает именно ваш пользователь.
- Вторую команду запускать только в Linux/macOS и с подставленным путём; только чтениеLinux · Терминал (Bash)КомандаВторую команду запускать только в Linux/macOS и с подставленным путём; только чтение.
npm config get cachels -ld ПУТЬ_КЕША
- 3. Проверьте переменные окруженияВ Linux/macOS посмотрите настройку через npm config list, предварительно не передавая вывод посторонним: в нём могут быть настройки реестров. Проверьте NPM_CONFIG_CACHE в конфигурации запуска или через команды оболочки. На Windows проверьте переменные пользователя в «Система → Дополнительные параметры системы → Переменные среды». Не трогайте чужой общий кеш.
- 4. Перейдите на собственный каталог кешаЕсли кеш указывает на чужую директорию, создайте каталог внутри домашнего профиля и установите путь только для своего пользователя. На Linux/macOS можно использовать путь $HOME/.npm; в Windows оставьте путь, управляемый npm для текущего пользователя. Сохраните прежнее значение, чтобы вернуть его при неуспехе.
- Linux/macOS; устанавливает пользовательский каталог кешаLinux · Терминал (Bash)С осторожностьюLinux/macOS; устанавливает пользовательский каталог кеша. Не применяйте эту команду буквально в PowerShell.
npm config set cache "$HOME/.npm" --location=userКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 5. Проверьте доступность кеша без глобальной установкиВыполните npm cache verify из своей учётной записи. Успешный вывод содержит проверку содержимого; при повторном EACCES найдите точный путь, который продолжает оставаться недоступным. Если удаление прав у рабочей папки критично, обратитесь к системному администратору.
- Непривилегированный запуск, проверяет целостность и обслуживает кешLinux · Терминал (Bash)КомандаНепривилегированный запуск, проверяет целостность и обслуживает кеш.
npm cache verify
- 6. Повторите установку на тестовом проектеВ копии проекта с согласованным lock-файлом выполните npm ci. Если он завершился, проверьте, что кеш теперь находится в домашнем каталоге и при повторной операции ошибка прав отсутствует. Если осталась, верните конфигурацию кеша к исходной и изучите права конкретного файла.
- Только в копии: удалит node_modules, может выполнять скрипты зависимостейLinux · Терминал (Bash)С осторожностьюТолько в копии: удалит node_modules, может выполнять скрипты зависимостей.
npm ciКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
#Проверка результата и действия при повторении
Ошибка EACCES исчезает при npm cache verify и установке тестового проекта обычным пользователем, при этом системные директории и чужие файлы не затронуты.
Если на указанном шаге результат отличается, остановитесь и запишите первое полное сообщение об ошибке, версию инструментов и проверенное состояние до исправления. Не переходите к опасным действиям на действующем проекте: повторите проверку на отдельной копии, верните сохранённые файлы и только затем выбирайте следующую причину.