需求: UniApp
的 H5
端已經(jīng)正常使用,現(xiàn)在打算兼容微信小程序
。
1. 問題分析
本以為應(yīng)該很順利,但是一上來就直接報錯了,心里很慌呀,報錯信息如下:
頁面[components/major/major-intro]錯誤:
TypeError: Cannot read property 'FormData' of undefined
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:20109)
at __webpack_require__ (runtime.js?t=wechat&s=1679123222779&v=c88fbffc60b4101fd05b6808eff1ad49:92)
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:20097)
at __webpack_require__ (runtime.js?t=wechat&s=1679123222779&v=c88fbffc60b4101fd05b6808eff1ad49:92)
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:19751)
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:19976)
at __webpack_require__ (runtime.js?t=wechat&s=1679123222779&v=c88fbffc60b4101fd05b6808eff1ad49:92)
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:19681)
at __webpack_require__ (runtime.js?t=wechat&s=1679123222779&v=c88fbffc60b4101fd05b6808eff1ad49:92)
at Object.<anonymous> (vendor.js?t=wechat&s=1679123222779&v=0a98776a18c77e11bdf2a8a15af44f38:19609)
(env: Windows,mp,1.06.2209190; lib: 2.30.2)
點擊源碼中看到的是這個:
/***/ }),
/* 170 */
/*!***********************************************!*\
!*** ./node_modules/form-data/lib/browser.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/* eslint-env browser */
module.exports = typeof self == 'object' ? self.FormData : window.FormData;
/***/ }),
【注】剛開始的時候以為是微信小程序
兼容性或者是 uniapp
兼容性的問題,但是去了 axios
的 GitHub
issue
中去搜索,結(jié)果發(fā)現(xiàn)了有人遇到了同樣的問題。啊,,這,,看樣子這三者都有各自的問題呀。
Issue
地址:node Cannot read property ‘FormData’ of undefined #5201
經(jīng)過了多次折騰與驗證,不認(rèn)有心人,大概率破案了:就是在微信小程序上,導(dǎo)致 axios
在判斷的時候出現(xiàn)問題,在 H5 的瀏覽器中就沒有這個錯誤(看起來是這兩個的鍋,還真的不是 uniapp
的鍋,哈哈)。
2. 解決方案
2.1 降低 axios 版本
axios
的 0.x
版本最高為 0.27.2
版本,所以直接如下操作即可。
# 移除已有的 axios
npm uninstall axios
# 安裝指定版本的 axios
npm install axios@0.27.2
2.2 提高到 axios 指定版本(推薦)
項目中用的是 1.2.1
版本(會報錯),截止到 2023年3月18日,最新的為 1.3.4
,所以直接裝了 1.3.4
版本,結(jié)果是可以用的,沒有報錯。
由此可以得出,估計 axios
自身也有問題,但是具體不知道是哪個版本修復(fù)的,沒有深入排查。
# 移除已有的 axios
npm uninstall axios
# 安裝指定版本的 axios
npm install axios@1.3.4
【注】各位大佬們,如果是其他的版本也可以用的話,告訴小弟一下! 祝頭發(fā)多多?。。?/p>
文章來源:http://www.zghlxwxcb.cn/news/detail-503012.html
個人博客:Roc’s Blog文章來源地址http://www.zghlxwxcb.cn/news/detail-503012.html
到了這里,關(guān)于uniapp 開發(fā)微信小程序踩坑:TypeError: Cannot read property ‘FormData‘ of undefined的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!