由於在內網開發,在將源代碼遷移到內網中,使用Jenkins構建時出現node-sass版本問題
首先先解決vue-cli-service: Permission denied權限問題
chmod -R 755 ./*
在網上查了各種解決方案,原理與方法都大同小異。
1、查找當前系統下node-sass所需的鏡像文件版本
// 查看當前系統使用版本
node -p "[process.platform,process.arch,process.versions.modules].join('-')"
2、根據所需使用版本,去node-sass的GitHub官網下載對應版本,並存放到某一目錄下
https://github.com/sass/node-sass/releases
( 下載地址,根據自己的版本下載 我是 win32-x64-67_binding.node )
3、修改node-sass的環境變量,
set SASS_BINARY_PATH=D:/nodejs/.nodes/win32-x64-67_binding.node (根據自己的地址和文件名修改)
4、安裝node-sass模塊
npm i node-sass -D --verbose
本人上述方案在多次嘗試後,以失敗告終。
經研究發現node-sass根據系統讀取各自版本的node-sass編譯文件
例如:在windows系統下,執行npm install,會下載win32-x64-67_binding.node文件並執行該文件進行編譯。但是將代碼遷移到linux下時,運行編譯命令會提示版本異常,這是因爲node-modules中沒有linux到node-sass包,所以需要再次執行npm install去下載當前系統到node-sass包。
上述大致清楚原因後,解決方案就有思路了,直接簡單粗暴,我們將三個系統的node-sass版本都下載下來不就不受系統影響來麼;
1、查找當前系統下node-sass所需的鏡像文件版本
// 查看當前系統使用版本
node -p "[process.platform,process.arch,process.versions.modules].join('-')"
2、根據所需使用版本,去node-sass的GitHub官網下載對應版本
這裏我將windows、macOs、linux的包都下載下來
3、進入到項目node_modules/node-sass/vendor目錄,並根據各系統創建目錄並將node文件放置到目錄下
這樣就可以完美解決在不同系統下導致的node-sass版本異常不能打包問題;
參考博客:
https://www.jianshu.com/p/947d050f98f2
https://blog.csdn.net/qk61508/article/details/83189742
https://www.jianshu.com/p/145cc862ceec
https://www.cnblogs.com/pengfei25/articles/11136263.html
https://blog.csdn.net/evermet/article/details/103735680
https://blog.csdn.net/ojr_up/article/details/78517559