gyp WARN EACCES У пользователя "root" нет прав доступа к каталогу dev

Пытаясь

sudo npm install protractor -g

и та же пресловутая ошибка / предупреждение снова (гуглил безрезультатно):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0"

Кажется, что node version 0.12.0 загружается и перестраивается снова и снова во время одной и той же установки, несмотря на то, что на моем компьютере установлена ​​текущая версия узла:

node -v
v0.12.0

Вопросы:

  • Каталог "/Users/dmitrizaitsev/.node-gyp/0.12.0" фактически отсутствует! Почему такое вводящее в заблуждение сообщение?

  • Почему этот каталог не был создан ни во время node v0.12.0 ни во время предыдущего успешного восстановления с node-gyp?

  • (Очевидно) Как я могу предотвратить это?

Я использую Mac OSX 10.8.5, если это имеет какое-либо значение.

3 ответа

Решение

ОБНОВИТЬ. Есть лучший способ - изменение npmЭто глобальный каталог по умолчанию для пользовательского подкаталога, к которому у вас уже есть правильные разрешения, поэтому не нужно в первую очередь связываться с разрешениями или владением системным файлом.

Как рекомендуется в https://docs.npmjs.com/getting-started/fixing-npm-permissions:

  1. Создайте каталог для глобальных установок:
mkdir ~/npm-global
  1. Настройте npm для использования нового пути к каталогу:
npm config set prefix '~/npm-global'
  1. Откройте или создайте ~/.profile (или же ~/.bash_profile etc) файл и добавьте эту строку (в конец файла):
export PATH=~/npm-global/bin:$PATH

См. Также руководство Синдре Сорхуса по этой теме: https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


Теперь выяснили, что было не так

Каталог имел неправильные разрешения - он не был доступен для записи (что было бы лучшим сообщением об ошибке, чем "доступный").

А поскольку он был недоступен для записи, временный каталог использовался и удалялся после каждого использования, поэтому всю загрузку приходилось запускать снова и снова.

Решение состоит в том, чтобы установить права пользователя с

sudo chown -R $USER <directory>

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

Смотрите здесь для более подробной информации.

Попробуйте с:

sudo npm install -g module --unsafe-perm

Это потому, что у вас нет папки в этом каталоге "/Users/dmitrizaitsev/.node-gyp/0.12.0".

Просто создайте новую папку с именем 0.12.0, которая является номером версии вашего узла

Это решит проблему.

Другие вопросы по тегам