npm ERR! Failed at the [email protected] postinstall script.

今天安裝腳手架工具時遇到這樣一個報錯信息:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

剛開始以爲是node-sass安裝失敗,還專門切換了node-sass的鏡像源去安裝,但還是失敗。

但注意看報錯信息有提示它可能是因爲above上面的報錯導致的。

於是,我再往上翻,發現了這樣一條疑似有用的報錯信息:

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/abloume/fe/node_modules/node-sass/build
gyp ERR! System Darwin 19.4.0

原來還是權限問題。

就是說 npm 出於安全考慮不支持以 root 用戶運行,即使你用 root 用戶身份運行了,npm 會自動轉成一個叫 nobody 的用戶來運行,而這個用戶幾乎沒有任何權限。這樣的話如果你腳本里有一些需要權限的操作,比如寫文件(尤其是寫 /root/.node-gyp),就會崩掉了。

爲了避免這種情況,要麼按照 npm 的規矩來,專門建一個用於運行 npm 的高權限用戶;要麼加 --unsafe-perm 參數,這樣就不會切換到 nobody 上,運行時是哪個用戶就是哪個用戶,即是 root。

最後,比如我安裝我的腳手架工具,只要這樣一條命令:

sudo npm i -g my-cli --unsafe-perm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章