vite.createFilter is not a function 问题解决

博客讲述了在项目中遇到Vite创建过滤器时报错'vite.createFilter is not a function'的情况,分析了原因可能是Vite版本与插件版本不一致。Vite刚发布了v3版本,而某些插件默认安装了更高版本,导致不兼容。解决方案包括升级Vite到v3或者降级插件到v2。Vite团队计划每年发布新主要版本以保持与Node.js的同步并提供平滑迁移路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目拉下npm install后 启动项目报错如下
在这里插入图片描述

报错内容 :

vite.createFilter is not a function

错误原因:

vite版本与安装的依赖版本不匹配

原因1

Vite 刚刚发布了 v3,但 我们使用的是 v2。

因此,如果您只是安装 Vue/React 插件而不指定版本,它们会安装比您需要的新版本。

npm i 后的vite插件默认最新版本,导致了vite插件版本高于 vite版本
原因2

问题解决

方法1(推荐): 升级vite至3版本

npm install -D vite@^3.0.0

pnpm add -D vite@^3.0.0

方法2:降低插件至2版本

npm i @vitejs/plugin-vue@2.3.3

npm i @vitejs/plugin-vue@2.3.3
npm i @vitejs/plugin-react@1.3.2

最后补充:

7 月 13 日,Vite 3 正式发布,它被称为下一代的前端工具链。Vite 团队决定至少每年发布一个新的 Vite 主要版本,以与 Node.js 的 EOL 保持一致,并借此机会定期审查 Vite 的 API,为生态系统中的项目提供较短的迁移路径。

### 解决方案概述 当遇到 `el.addEventListener is not a function` 错误时,通常意味着尝试调用此方法的对象不是一个有效的DOM元素。具体原因可能涉及框架特定的行为或是第三方库的干扰。 #### UniApp中的解决方案 对于UniApp环境下的问题,如果使用的是Vue组件,则应当通过 `$el` 访问底层的真实DOM节点再绑定事件监听器[^1]: ```javascript this.$refs.content.$el.addEventListener('click', this.close); ``` 这样做能够确保获取到实际渲染后的HTML元素而非Vue封装过的引用对象。 #### Vue项目配合Element UI上传文件场景 针对Vue结合Element UI做文件上传功能时发生的此类异常,可能是由于MockJS篡改了全局范围内的`XMLHttpRequest`原型链所致[^2]。修正措施是在mock插件配置里补充缺失的方法定义: ```javascript // 修改位置位于 node_modules/mockjs/dist/mock.js 或者 src/mock/xhr/xhr.js 文件内指定行数附近 MockXMLHttpRequest.prototype.upload = xhr.upload; ``` 上述操作旨在恢复被覆盖的标准API行为,使得后续逻辑得以正常运作。 #### MPVue集成ECharts图表展示情况 MPVue环境下引入ECharts绘图工具包而触发相同类型的报错,往往可以通过降级版本来规避兼容性隐患[^3]: ```bash cnpm i echarts@5.2.2 -S ``` 安装指定历史稳定版有助于绕过潜在的新特性冲突风险。 #### Vite构建工具管理模拟服务设置 最后,在采用Vite作为打包工具的情况下,调整其内置mock服务器选项也是一种可行办法[^4]: ```typescript import { viteMockServe } from 'vite-plugin-mock'; export function configMockPlugin(isBuild: boolean) { return viteMockServe({ ... prodEnabled: false, ... }); } ``` 禁用生产模式下的mock支持能有效防止不必要的副作用影响应用运行状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一缕阳光@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值