解決IE報錯[vue router]Failed to resolve async component default:strict 模式下不允許分配到只讀屬性


  之前遇到過一個奇怪的問題,在其他瀏覽器下一切正常,但在萬惡的IE下,卻一直不行。

  具體問題場景就是:比如orderDetail頁面出現問題,那么只要是路由跳轉的,點第1次無法跳轉,必須得點第2次才可以跳轉,但是跳轉過去之后,頁面也是一片空白,不加載路由頁面。然后控制台報錯:strict 模式下不允許分配到只讀屬性。

  所以我往這方面搜索,在網上看到一些相關信息

  IE中JavaScript異常提示:strict 模式下不允許分配到只讀屬性。報異常的代碼如下:

document.getElementById("mapLayer").style = "width: 98%;height:98%;";

  解決方法如下: 將css屬性拆分開依次設置屬性值即可。

document.getElementById("mapLayer").style.width = "98%"; document.getElementById("mapLayer").style.height = "98%";

  注:在這嚴格模式下xxx.style會被認定為只讀屬性,所以在IE中報錯。

  但是,我在我的代碼里找了幾圈都沒有找到類似的只讀屬性。

  沒辦法,只能使用傻辦法一層一層排查。最后發現把orderDetail頁面里的內容全部換成其他頁面,發現是可以正常的,由此可以確定,問題就出在該orderDetail頁面里,然后再到orderDetail頁面里一層一層排查。發現問題出在這里

import QRCode from 'qrcode'

// 動態生成二維碼
useqrcode () {   let canvas = document.getElementById('canvas')   let _this = this QRCode.toCanvas(canvas, this.qrcode, function (error) { if (error) { _this.$message({ message: '二維碼生成失敗,請重新支付', type: 'error' }) } }) },

  關鍵是不知道為什么引入QRCode,然后畫圖會導致IE報這種錯,對IE實在是蛋疼,沒辦法只能修改這地方

  解決方案:換 qriously 生成二維碼

<qriously class="qrcode" :value="qrcode" :size="150"/>

  修改之后一切正常了。


免責聲明!

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



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