1. 程式人生 > 其它 >ie 引發了異常但未捕獲

ie 引發了異常但未捕獲

記一次不小心搞壞了前幾天已經解決掉的 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 .