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:
- Создайте каталог для глобальных установок:
mkdir ~/npm-global
- Настройте npm для использования нового пути к каталогу:
npm config set prefix '~/npm-global'
- Откройте или создайте
~/.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
все созданные подкаталоги получают неправильные разрешения, что в дальнейшем приведет к проблемам.
Это потому, что у вас нет папки в этом каталоге "/Users/dmitrizaitsev/.node-gyp/0.12.0".
Просто создайте новую папку с именем 0.12.0, которая является номером версии вашего узла
Это решит проблему.