Mac下使用npm全局安装包时“uid must be an u
2016-10-09 本文已影响261人
代码写的像菜虚鲲
该错误提示“uid must be an unsigned int”,如下图所示:

google一下错误,npm问题区已经有人提了该问题:https://github.com/npm/npm/issues/13918 。
有人给出的解决办法是升级node版本到最新,另外npm的版本如果是3.10.8的话可以降级到3.10.7或3.10.6试试。果断试之,使用sudo npm install -g npm@3.10.6 降级,结果失败,还是同样错误!!!
继续查看发现可能是npm权限的问题。使用“npm config get prefix”查看下npm默认的安装路径,大部分情况下都应该是“/usr/local”

然后使用“ls -la /usr/local/lib/node_modules”查看当前目录下的所有文件和文件夹,发现用户组竟然是“nobody”:

使用“whoami”命令查看一下自己的用户组却是holyhouhou(不用查看也应该知道,嘿嘿),使用命令“sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}”把文件夹用户组修改为当前用户并给权限:

修改后发现变过来了:

然后再试着安装,发现成功了,不再报错!!!
还不明白的可以去看npm文档:https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-1-change-the-permission-to-npms-default-directory