uniapp 开发微信小程序踩坑:TypeError: Cannot read property ‘FormData‘ of undefined

news/2024/10/30 15:31:45/

需求: UniAppH5 端已经正常使用,现在打算兼容微信小程序

1. 问题分析

本以为应该很顺利,但是一上来就直接报错了,心里很慌呀,报错信息如下:

页面[components/major/major-intro]错误:TypeError: Cannot read property 'FormData' of undefinedat 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 兼容性的问题,但是去了 axiosGitHub issue 中去搜索,结果发现了有人遇到了同样的问题。啊,,这,,看样子这三者都有各自的问题呀。

Issue 地址:node Cannot read property ‘FormData’ of undefined #5201

在这里插入图片描述

经过了多次折腾与验证,不认有心人,大概率破案了:就是在微信小程序上,导致 axios 在判断的时候出现问题,在 H5 的浏览器中就没有这个错误(看起来是这两个的锅,还真的不是 uniapp 的锅,哈哈)。

2. 解决方案

2.1 降低 axios 版本

axios0.x 版本最高为 0.27.2 版本,所以直接如下操作即可。

# 移除已有的 axiosnpm uninstall axios# 安装指定版本的 axiosnpm install axios@0.27.2

2.2 提高到 axios 指定版本(推荐)

项目中用的是 1.2.1 版本(会报错),截止到 2023年3月18日,最新的为 1.3.4,所以直接装了 1.3.4 版本,结果是可以用的,没有报错。

由此可以得出,估计 axios 自身也有问题,但是具体不知道是哪个版本修复的,没有深入排查。

# 移除已有的 axiosnpm uninstall axios# 安装指定版本的 axiosnpm install axios@1.3.4

【注】各位大佬们,如果是其他的版本也可以用的话,告诉小弟一下! 祝头发多多!!!

在这里插入图片描述

个人博客:Roc’s Blog


http://www.ppmy.cn/news/33063.html

相关文章

进阶C语言——指针【指针笔试题练习】

文章目录笔试题1笔试题2笔试题3笔试题4笔试题5笔试题6笔试题7笔试题8笔试题1 int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; }运行结果&#xff1a; ptr-1向前移动一个字节指向5&#xf…

【24】Verilog进阶 - 序列检测2

VL35 状态机-非重叠的序列检测 1 思路 状态机嘛,也是比较熟悉的朋友啦, 我就火速写出了STG。如下黑色所示: 2 初版代码 `timescale 1ns/1nsmodule sequence_test1(input wire clk ,input wire rst ,input wire data ,output reg flag ); //*************code**********…

Stable Diffusion WebUI在线部署运行

AI绘画黑科技Stable Diffusion&#xff0c;能够根据文字描述生成精美图像&#xff0c;开源且在消费级GPU上就能运行。 Stable Diffusion WebUI是Stable Diffusion的Web版&#xff0c;提供了便捷的WebUI交互界面&#xff0c;部署使用方便&#xff0c;支持中文汉化插件&#xff0…

MySQL索引特性

文章目录为什么要有索引&#xff1f;认识磁盘磁盘的结构磁盘的盘片结构定位扇区磁盘随机访问 (Random Access)与连续访问 (Sequential Access)MySQL与磁盘交互索引的理解测试主键索引索引的原理索引结构是否可以使用其他数据结构B树 vs B树聚簇索引 vs 非聚簇索引为什么要有索引…

Docker【基本使用】

1&#xff1a;启动Docker1.1&#xff1a;操作systemctl start docker.service1.2&#xff1a;常见问题【第一步】启动docker&#xff0c;提示启动失败&#xff0c;查询运行状态systemctl start docker.service【第二步】查询docker运行状态&#xff0c;提示不支持SELinux【第三…

元宇宙、区块链 通俗易懂

什么是区块链&#xff1f;比特币挖矿是什么&#xff1f;元宇宙是什么&#xff1f;Web(万维网)的三权化进化&#xff1a;基于此&#xff0c;介绍下“元宇宙”。1992年&#xff0c;美国作家史蒂芬森在《雪崩》一书中首次提出了“元宇宙(Metaverse)”的概念。元宇宙实际上就是一种…

103.【Java Microbenchmark Harness】

JMH(一)、JMH概述1.什么是JMH?2.JMH入门操作(1).没有JMH的时候我们怎么进行测试的?(2).利用JMH进行测试(二)、JMH运用展示1.Hello JMH(三)、JMH注解1.Warmip和Measurement (预热和真实执行)【类】2.BenchmarkMode和OutputTimeUnit (输出方式和输出单位)【方法】3.State (状态…

SDIO读写SD卡速度有多快?

前两天测试了SPI方式读写SD卡的速度《SPI方式读写SD卡速度测试》&#xff0c;今天来测试一下SDIO方式的读写速度。测试条件&#xff1a;单片机&#xff1a;STM32F407VET6编译环境&#xff1a;MDK 5.30HAL库SD卡&#xff1a;闪迪32GB/64GB TF卡文件系统&#xff1a;FatFS R0.12c…