近日使用npm全局安装gulp时出现报错
Error: ENOTSUP: operation not supported on socket, mkdir '/home/work'
at Error (native)
1. npm报错,提示创建'/home/work'目录,我们打开npm的配置文件看一下执行 vim ~/.npmrc
registry=http://registry.npm.pt.mi.com/
prefix=/home/work/nodejs/bin
或者可以
执行 npm config list
; cli configs
user-agent = "npm/3.10.10 node/v6.10.2 darwin x64"
; userconfig /Users/litingyu/.npmrc
prefix = "/home/work/nodejs/bin"
registry = "http://registry.npm.pt.mi.com/"
; node bin location = /usr/local/bin/node
; cwd = /Users/litingyu
; HOME = /Users/litingyu
; "npm config ls -l" to show all defaults.
可以看到npm会把全局的安装包放在preifx指示的 "/home/work/nodejs/bin"目录下
2.但是我们执行sudo mkdir /home/work会发现报错
mkdir: /home/work: Operation not supported
这下了解了,原来是我们没有操作home的权限(Mac的设计初衷不让修改home目录);
PS: 我们当然可以修改home目录的操作权限来安装node_modules,但是亲测安装了之后却并不能执行gulp命令,其实这个目录'/home/work/nodejs/bin'本身是有问题的。
3.解决方案
执行 vim ~/.npmrc
改为
registry=http://registry.npm.pt.mi.com/
# prefix=/home/work/nodejs/bin
prefix=/usr/local
4. 执行
sudo npm install -g gulp
执行gulp -v
有效!