上周,在項目部署的時候出現一個頁面css樣式不正確,但是在本地開發過程中顯示是正常的,但是在使用Jenkins自動編譯打包部署時,頁面布局顯示錯亂。
分析過程:
1、一開始以為地Jenkins打包編譯的腳本代碼有問題,經過排查是正常的。
2、本地開發正常,打包版本不正常,分析可能是編譯后css的優先級被改變,導致樣式被覆蓋。但是本地直接build,然后使用ngnix部署,發現樣式是正常的。因此排除是樣式優先級被覆蓋問題
3、把在本地手動打包的文件,替換Jenkins打包生成的dist文件,啟動發現也是正常的。
4、最后發現,Jenkins打包的代碼顯示找不到一個css文件。但是本地打包是不會顯示這個問題。
分析結果:
由於css文件中,在import時,我把@import "css/vehicleArchives";誤寫成了@import "css/vehiCleArchives",導致找不到css文件。但是在本地開發過程和build完部署啟動,都沒有報找不到樣式文件這個錯誤,因為我們猜測應該是windows環境和linux環境的區別。
因為Jenkins自動打包部署程序是部署在linux系統下,而本地開發是在windows環境下。由於樣式路徑寫錯了,但是在windows下忽略了路徑大小寫的問題,而Linux是會區分大小寫,因此提示無法找到文件。
簡單總結性項目再windows和linux下部署的差異:
1、大小寫敏感度不同:
Linux下路徑和文件名都是區分大小寫的。abc/bcd/aa.jpg和abc/Bcd/aa.jpg是兩個不同的文件路徑,window訪問沒問題,Linux大小寫敏感會導致找不到文件。
2、盤符及目錄分隔符的區別
父子目錄及目錄與文件的分隔符,Windows是\,而Linux是/,java編碼最好使用File.separator(能夠自動識別Widow或者Linux,使用想用的分隔符)
兩個不同路徑分隔符,window下;,Linux下為:,java編碼最好使用File.pathSeparator
在前端開發過程中,暫未遇到盤符和分隔符的相關異常,后續有遇到再進行記錄。
