ie 引發了異常但未捕獲
阿新 • • 發佈:2021-06-20
記一次不小心搞壞了前幾天已經解決掉的 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
.