vue項目在構建過程中報錯 Error: ENOENT: no such file or directory, scandir '***/node_modules/node-sass/vendor'


項目在遠程構建時 執行npm installl && npm run build過程中顯示如下錯誤:

是因為使用node-sass依賴導致的;在安裝node-sass的過程中會出現安裝失敗的情況(未找到根本原因)

node-sass在官方文檔上面實際已經是不推薦了的,可以在git庫中看到不建議使用node-sass;

       

具體解決方案:

1 可以使用sass 替換node-sass 將原有的node-sass卸載 重新安裝sass

npm uninstall --save node-sass
npm install sass -D (-D 是 --save-dev的簡寫)

但是注意需要將deep 更新為>>> ,語法上有些許的不同;

2 仍然想使用node-sass可以嘗試用rebuild 重新構建包(這種方案不一定能徹底解決問題)

npm rebuild node-sass

  可以在package.json里面build報錯之前進行預編譯

     

可以理解為一個鈎子 ,prebuild 會在build之前自動執行;

3 服務器更新node版本

注意:在遷移到sass過程時,可能部分包會依賴sass,比如webpack3版本

使用的 webpack 版本不低於4的項目,可以直接遷移過去 dart-sass, 項目是 webpack 3, 如果要支持 dart sass 就需要最低 webpack 4 + sass-loader v9 以上的版本,可以通過升級webpack版本來徹底解決問題,但是需要注意對 webpack 進行升級會牽涉很多打包部件的修改;

 

備注:

npm 腳本有prepost兩個鈎子。舉例來說,build腳本命令的鈎子就是prebuildpostbuild

"prebuild": "echo I run before the build script",
"build": "cross-env NODE_ENV=production webpack",
"postbuild": "echo I run after the build script"

  用戶執行npm run build的時候,會自動按照下面的順序執行。

npm run prebuild && npm run build && npm run postbuild

  因此,可以在這兩個鈎子里面,完成一些准備工作和清理工作。下面是一個例子。

"clean": "rimraf ./dist && mkdir dist",
"prebuild": "npm run clean",
"build": "cross-env NODE_ENV=production webpack"

  npm 還有很多其他的鈎子,關於package.json相關的內容可以參考阮大佬的一篇文章:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM