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 .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM