axios獲取上傳進度報錯xhr.upload.addEventListener is not a function


錯誤問題

Vue:xhr.upload.addEventListener is not a function

這個問題是因為mockjs改動了axios里面XMLHttpRequest對象致使的

根據axios源碼 l是一個XMLHttpRequest對象

mockJs把l變量從XMLHttpRequest對象改為了MockXMLHttpRequest對象

因此l.upload是一個空對象 空對象沒有 addEventListener方法 因此報錯

解決方案

方法1

在工程node_modules/mockjs/dist/mock.js文件里,在mockjs判斷的條件的地方 (搜尋)->/若是未找到匹配的數據模板,則 采用原生 XHR 發送請求。/ 通常是8308行位置,添加代碼

MockXMLHttpRequest.prototype.upload = xhr.upload;

 給MockXMLHttpRequest對象添加一個原生xhr.upload方法。

方法2

在工程node_modules/mockjs/src/xhr/xhr.jsprototype 通常是第216行添加代碼

MockXMLHttpRequest.prototype.upload = xhr.upload;

這個方法要重新編譯才能夠生效對象


免責聲明!

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



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