Отказано в доступе при установке Yo

Я пытаюсь настроить йо для использования углового генератора для проекта. Я выполняю шаги, подробно описанные здесь: http://yeoman.io/learning/index.html

У меня уже установлены Node.js и NPM.

Но когда я использую команду:

sudo npm install -g yo bower grunt-cli

Это не удается, и я получаю эту ошибку:

> [email protected] postinstall /usr/lib/node_modules/yo/node_modules/cross-spawn/node_modules/spawn-sync
> node postinstall


fs.js:439
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: EACCES, permission denied '/usr/lib/node_modules/yo/node_modules/cross-spawn/node_modules/spawn-sync/package.json'
    at Object.fs.openSync (fs.js:439:18)
    at Object.fs.writeFileSync (fs.js:978:15)
    at Object.<anonymous> (/usr/lib/node_modules/yo/node_modules/cross-spawn/node_modules/spawn-sync/postinstall.js:20:6)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3
npm ERR! Linux 3.13.0-24-generic
npm ERR! argv "node" "/usr/bin/npm" "install" "-g" "yo"
npm ERR! node v0.10.37
npm ERR! npm  v2.11.0
npm ERR! code ELIFECYCLE

npm ERR! [email protected] postinstall: `node postinstall`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script 'node postinstall'.
npm ERR! This is most likely a problem with the spawn-sync package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node postinstall
npm ERR! You can get their info via:
npm ERR!     npm owner ls spawn-sync
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/vincent/npm-debug.log

Я пытался использовать chmod 777 on /usr/lib/node_modules, но, похоже, это не работает лучше.

Я могу установить Bower и Grunt, это сработало, но когда я пытаюсь установить Yo, он каждый раз терпит неудачу...

Я понятия не имею, что делать, поскольку все, что я пытался использовать с помощью chmod или chown, не сработало.

Спасибо за помощь ребята! :)


person Vincent Montalieu    schedule 01.06.2015    source источник


Ответы (5)


Я работал над проблемой, используя:

sudo npm install -g yo --unsafe-perm

Использование --unsafe-perm предложено nyakto в этом отчете об ошибке.

Изменить - понял, что это URL-адрес, опубликованный @Stephan в его ответе.

Я не знаю подробностей о --unsafe-perm - я могу только заявить, что это позволило мне установить yo без ошибок, которые я испытал, которые были очень похожи / идентичны OP.

person Trevor    schedule 01.06.2015
comment
Насколько я понимаю, использование sudo здесь не очень хорошая идея, см. этот ответ для лучшего решения - person Felix Eve; 04.11.2015

Комментарий в репозитории github исправил мою проблему. В основном просто нужно обновить версию узла. Перечисление шагов для дальнейшего использования:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
node -v

Ваше здоровье

person Roy M J    schedule 03.07.2015

Взгляните на этот отчет об ошибке: https://github.com/ForbesLindesay/spawn-sync/issues/11

person Stephan    schedule 01.06.2015
comment
Спасибо за вашу помощь! Ценить это ;) - person Vincent Montalieu; 02.06.2015

Я была такая же проблема . По-видимому, общий вопрос с йоменом. выполнение следующего решило мою проблему, попробуйте удалить все файлы в каталоге /Users/yourusername/.config/configstore/, а затем выполните команду yo, как обычно.

person Malik    schedule 01.06.2015
comment
Спасибо за ответ, но я не могу найти этот путь. Я на Linux, разве вы мне не даете путь к Windows? - person Vincent Montalieu; 01.06.2015
comment
о да, это путь Windows. если вы используете linux env. найдите имя папки .config в своем домашнем каталоге. он скрыт, поэтому нажмите ctrl+H, чтобы показать папки. вы должны найти папку с именем configstore внутри этого файла . очистите папку и попробуйте снова запустить yo - person Malik; 01.06.2015
comment
Я пробовал это, но я все еще получаю ту же ошибку. Внутри папки configstore было 3 файла, но все они относились к Bower, который я успешно установил. Так что я предполагаю, что удаление этих файлов никак не повлияло на установку Yo. - person Vincent Montalieu; 01.06.2015

У меня тоже была такая же проблема в linuxmint 17. Потому что я использую nodejs 0.10 и обновляю npm до 2.X.

Попробуйте переустановить nodejs и выбрать правильную версию https://github.com/nodesource/distributions.

Удачи!

person Partoo    schedule 02.06.2015