前言
開發 Vue專案過程當中遇過各種node環境的神秘問題。最奇怪的是本機端的 node版本和 server端完全相同,但是本機端的 npm install和 npm build是正常時,確不能保證 server端也同樣沒有問題。
我自己將常遇到的問題整理成筆記順便分享給大家。但每個人的開發環境及可能遇到的問題皆不相同,所以就僅供參考了。
1. 切換node版本造成sass打包噴錯:
首先確認 node跟 node-scss 版本對照表,初步排除裝錯版本的問題。
2. npm神秘的 cache問題:
排除 cache的問題
rm -r node_modules
npm cache clean --force
再來重新 npm install
、重新打包試試
解決方式
如果上述問題都已排除,並且同樣的 package.json在不同環境下有的可以 build成功有的不成功(比如本機可以但server上失敗),這種情形通常是發生在有更換環境node版本的情形下。
解決方式:
npm rebuild sass
然後再重新 npm install
就可以了
我的理解是某些 package的依賴是存放在 npm的環境當中,而不是專案的 node_mobules當中,所以更換版本後要再重新編譯 (rebuild)。
3. root權限問題:
錯誤訊息 gyp ERR! stack Error: EACCES: permission denied
造成錯誤的原因是npm
不適用 root
帳戶權限,加上參數--unsafe-perm=true --allow-root
可解決問題
sudo npm i --unsafe-perm=true --allow-root
參考資料
What is difference between 'npm install' and 'npm rebuild'?
npm rebuild node-sass 是什么意思,为什么要使用
npm install 报错,提示gyp ERR! stack Error: EACCES: permission denied 解决方法