1、下載項目,先更新.npmrc文件:
registry=http://registry.npmmirror.com
2、安裝依賴,本地啟動,運行正常,但直接提交代碼線上打包時會報錯:
“ 未找到相關的合并請求。”
打開日志頁面,報錯信息是
Failed to minify the bundle. Error: static/js/main.94e018e0.js from
UglifyJs Invalid assignment
3、嘗試本地打包,會報錯
‘GENERATE_SOURCEMAP’ 不是內部或外部命令,也不是可運行的程序
可以先刪掉這個指令
"GENERATE_SOURCEMAP=false react-app-rewired build && cd ./build && pktool -k 包名"
// 刪掉后為:
"react-app-rewired build && cd ./build && pktool -k 包名"
繼續打包,然后報錯
Failed to minify the code from this file:
./node_modules/caniuse-lite/dist/unpacker/agents.js:8
4、刪除yarn.lock,刪除node_modules,清理緩存,用npm重新安裝,報錯依舊。
5、關鍵:打開生成的package-lock.json,查找caniuse-lite這個包,發現在browserslist包里面引用了版本"^1.0.30000792",在autoprefixer包里面引用了版本"^1.0.30000748",但實際的安裝版本是"1.0.30001621"。查caniuse-lite在npm上的歷史版本https://www.npmjs.com/package/caniuse-lite,發現這幾年雖然一直在更新,但一直只升級版本號第三位,當前最新的就是1.0.30001621。猜想這個4年前的項目基礎環境只會比當時的更老,雖然package.json中鎖死了相關的包的依賴版本(如"react-scripts": “1.1.4”),但他依賴的其他包仍然不能鎖死版本,導致部分依賴升級的比較新而不兼容。
6、嘗試:查找4年前caniuse-lite的大概版本號,選一個"caniuse-lite": "1.0.30000999"進行鎖死安裝,然后再build,果然成功了。