node安装依赖包时 node-pre-gyp 报错解决办法

 报错信息:

gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Darwin 17.4.0
gyp ERR! command \"/usr/local/bin/node\" \"/Users/node_modules/node-gyp/bin/node-gyp.js\" \"build\" \"--fallback-to-build\" \"--module=/Users/Desktop/template/vuedemo/node_modules/fsevents/lib/binding/Release/node-v83-darwin-x64/fse.node\" \"--module_name=fse\" \"--module_path=/Users/Desktop/template/vuedemo/node_modules/fsevents/lib/binding/Release/node-v83-darwin-x64\" \"--napi_version=6\" \"--node_abi_napi=napi\"
gyp ERR! cwd /Users/Desktop/template/vuedemo/node_modules/fsevents
gyp ERR! node -v v14.4.0
gyp ERR! node-gyp -v v5.1.1
gyp ERR! not ok 
node-pre-gyp ERR! build error 
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /Users/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/Desktop/template/vuedemo/node_modules/fsevents/lib/binding/Release/node-v83-darwin-x64/fse.node --module_name=fse --module_path=/Users/Desktop/template/vuedemo/node_modules/fsevents/lib/binding/Release/node-v83-darwin-x64 --napi_version=6 --node_abi_napi=napi' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Users/Desktop/template/vuedemo/node_modules/fsevents/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1051:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
node-pre-gyp ERR! System Darwin 17.4.0
node-pre-gyp ERR! command \"/usr/local/bin/node\" \"/Users/Desktop/template/vuedemo/node_modules/fsevents/node_modules/node-pre-gyp/bin/node-pre-gyp\" \"install\" \"--fallback-to-build\"
node-pre-gyp ERR! cwd /Users/Desktop/template/vuedemo/node_modules/fsevents
node-pre-gyp ERR! node -v v14.4.0
node-pre-gyp ERR! node-pre-gyp -v v0.10.0
node-pre-gyp ERR! not ok

一、安装时,node-pre-gyp 和 node-sass 报错原因

由于 [email protected][email protected][email protected] › fsevents@^1.2.7 没有支持 node 12 的 pre build binary。

https://github.com/paulmillr/chokidar/issues/797 要 chokidar 3.x 才会被解决。

二、解决办法

方法一:降低 node 版本到 node12 以下

方法二:  加 --unsafe-perm 参数(亲测有效)

sudo npm i --unsafe-perm  // Windows不需要加sudo
或
sudo yarn --unsafe-perm  // Windows不需要加sudo

// 如果还是报错,删除 node_module 和 .lock 文件,重新安装

--unsafe-perm 参数的含义:

就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样的话如果你脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会崩掉了。

为了避免这种情况,要么按照 npm 的规矩来,专门建一个用于运行 npm 的高权限用户;要么加 --unsafe-perm 参数,这样就不会切换到 nobody 上,运行时是哪个用户就是哪个用户,即使是 root。

经常是安装node-sass的时候会很容易出现因为权限不够无法创建目录的问题。

方法三:全局安装 node-gyp,然后重新安装依赖包。

npm i node-gyp -g

Guess you like

Origin blog.csdn.net/huangpb123/article/details/121306978