npm全局安装gulp报错解决

近日使用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 有效!

5.成功啦!

你可能感兴趣的:(npm全局安装gulp报错解决)