今天在編譯機上編譯前端代碼,報了找不到依賴的異常。檢查后發現是node_modules/.bin下少了一些文件。
一開始疑惑為什么本地能成功生成軟鏈在node_modules/.bin,服務器上面卻不行呢?
帶着疑惑檢查了一遍shell腳本,發現原來在安裝依賴的時候有一個坑。
安裝依賴的過程如下:
- 執行
npm i安裝依賴 - 解壓編譯好的二進制依賴到
node_modules下
問題就出在第二步,使用tar -zxvf xxx.gz -C node_modules解壓文件,會把同名的源文件覆蓋掉,導致第一步生成的.bin被覆蓋了。
解決后,思考了一下以后如何避免這種問題:
- 使用了解不深的技術時,要詳細閱讀api文檔,清楚調用它會帶來什么結果。
- 測試要到位,這次是之前改了編譯邏輯,沒有覆蓋測試,導致遇到這個難以察覺的bug。
- 排查問題時,本地環境要與服務器環境一致,要一步步debug推進,看看究竟是拿一步出問題。
