記一次不小心搞壞了前幾天已經解決掉的 ie 兼容問題, 簡直要瘋, 因為明天就要用!!!
就隨便寫點吧, 因為焦作和痛苦了幾小時, 后面還有一大堆重要事呢(mockm 更新的版本貌似出問題了, 已有百來個人更新了此版本, 論回歸測試的重要性).
本來之前花了兩天解決了 ie 的兼容問題, 提交了代碼. 一周后說要找個時間寫一篇兼容文章, 為了文章結果可重現, 就刪了依賴. 撤回了一些感覺無關的修改.
然后重新打包時, 在 ie 上跑不起來了, 報錯 引發了異常但未捕獲, 還原代碼也沒有用, 還原不了到上次 build 時的文件狀態了, 不知道是依賴問題還是有關鍵的修改沒有保存到版本庫.
- 嘗試使用過
babel-polyfill,core-js@3,browserslist一系列配置都不行 - 把代碼中的 Symbol 換成普通的 key 也不行
- 網上測試過各種方案還是不行, 不知道是不是有某個第三方依賴使用了 Symbol 造成的
- 7 小時之間一直在測試各種方法, 連續幾十次想放棄過后, 直接找了一個線上 cdn 解決了…
- 忘記了之前是怎么處理這個問題的, 沒有使用什么線上 cdn, 應該關鍵代碼也都全部提交的.
ie 報錯 SCRIPT5022: 引發了異常但未捕獲 但又不顯示哪行錯了, 是什么錯. 這時候需要把腳本進入全局 try/catch:
try {
// 原腳本
} catch (error) {
console.log('error', error)
}
然后這時候才能得到具體錯誤, 例如 error TypeError: Incompatible receiver, Symbol required.
這時候大約可以判斷是 Symbol 語法不兼容導致, 引入對應的 polyfill 即可, 例如 https://cdn.jsdelivr.net/npm/symbol-es6/dist/symbol-es6.min.js .
