安装 Yo 时权限被拒绝

Permission denied while installing Yo

我正在尝试设置你在项目中使用 angular 生成器。我正在按照此处详述的步骤操作:http://yeoman.io/learning/index.html

我已经安装了 Node.js 和 NPM。

但是当我使用命令时:

sudo npm install -g yo bower grunt-cli

它失败了,我得到这个错误:

> spawn-sync@1.0.11 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! spawn-sync@1.0.11 postinstall: `node postinstall`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the spawn-sync@1.0.11 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 时,每次都失败...

我不知道该怎么做,因为我尝试使用 chmodchown 的所有方法都不起作用。

感谢你们的帮助! :)

我遇到了同样的问题。显然是约曼的常见问题。执行以下操作解决了我的问题尝试删除 /Users/yourusername/.config/configstore/ 目录中的所有文件,然后像往常一样 运行 yo 命令。

查看此错误报告: https://github.com/ForbesLindesay/spawn-sync/issues/11

我使用以下方法解决了这个问题:

sudo npm install -g yo --unsafe-perm

nyakto 在此 bug report 中建议使用 --unsafe-perm

编辑 - 意识到这是@Stephan 在他的回答中发布的URL。

我不知道关于 --unsafe-perm 的细节 - 我只能说它允许我安装 yo 而我遇到的错误与 OP 非常相似/相同。

我也有同样的问题,在 linuxmint 17 下。 因为我使用 nodejs 0.10,并将 npm 升级到 2.X。

尝试重新安装 nodejs 和 select 正确的版本 https://github.com/nodesource/distributions

祝你好运!

github 回购中的评论解决了我的问题。基本上只需要更新节点版本。列出步骤供日后参考:

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

干杯