当前位置: 首页
AI教程
Vitest+Vue3踩坑实录与避坑指南

Vitest+Vue3踩坑实录与避坑指南

热心网友 时间:2026-06-30
转载

Vitest 在使用过程中,最让人头疼的问题往往集中在:隐式规则太多,导致测试环境下的构建结果与常规构建不一致。最终结果就是——你明明写对了代码,测试却无法通过,或者通过了但心里没底。下面列举的几个常见坑,几乎每个从 Vue 3 项目迁移过来的团队都会踩上一次。

vitest + vue3 踩坑记录

1. 插件 transform 无效

费了好大功夫写了一个 Vite 插件,结果在 Vitest 里运行毫无反应。怎么回事?经过排查发现,Vitest 默认不会处理公共库(node_modules 中的依赖)。如果你的插件需要对某个公共库进行 transform,必须手动配置 test.server.deps.inline,明确告诉它“这个库不要跳过,请给我处理”。这个配置项隐藏得比较深,很容易被忽略。

2. 模块被解析为 CommonJS 版本

原本以为 CommonJS 版本也能用,反正 Node 环境运行没问题。但问题在于,测试的目的是模拟真实的浏览器环境。比如你想验证代码在关闭 __VUE_OPTIONS_API__ 的情况下是否正常工作,而 Vue 的 CommonJS 预构建产物根本没有这个开关,测试虽然能通过,却无法证明任何事。解决方法其实不复杂:通过插件提前按照浏览器规则去解析模块。这里推荐使用 @rollup/plugin-node-resolve,并设置 browser: true。注意还要调整钩子执行顺序,确保它在 Vite 内置插件之前执行:

(function() {
  let plugin = nodeResolve({browser: true });
  plugin.resolveId.order = undefined; // 调整钩子执行顺序
  plugin.enforce = "pre"; // 确保在 Vite 内部插件之前执行
  return plugin;
})()

3. tsx 配置失效

明明在 tsconfig.json 里配置好了 TypeScript 编译选项,但最终产物却与预期不符。追查了半天,发现罪魁祸首是 @vitejs/plugin-vue-jsx 这个插件——它内置了一套基于 Babel 的 TypeScript 编译配置,根本不读取你的 tsconfig。理想的方案是让前面的流程先把 TSX 转成 JSX,然后这个插件只处理 JSX 部分,各司其职。配置修改如下:

(function() {
  let plugin = vueJsx({
    tsTransform: 'built-in',
    include: /\.(j|t)sx$/
  });
  plugin.transform.order = undefined;
  plugin.enforce = "pre"; // 确保提前拦截和处理
  return plugin;
})()

这三个坑,核心都是 Vitest 的隐式规则所导致的。搞清楚背后的原理,配置起来就不再是玄学。希望这些经验能帮你少走弯路。

来源:https://developer.aliyun.com/article/1744259

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
企业组织级AI赋能具体实施方法

企业组织级AI赋能具体实施方法

前段时间收到一位读者的留言,希望聊聊企业级、组织级的AI赋能究竟该怎么落地。巧的是,前几天刚看到一份咨询调研机构的数据:对近一两年所有企业级AI赋能项目的统计显示,超过90%的甲方企业认为,AI赋能在核心业务价值链上没有发挥任何实质性作用。除了AI辅助办公、企业智能知识库这类边缘应用起到了一些辅助效

时间:2026-06-30 16:16
Scrapy与Redis分布式架构的日本电商多平台数据聚合系统

Scrapy与Redis分布式架构的日本电商多平台数据聚合系统

从事日本电商数据聚合工作时,最大的难点在于要同时应对雅虎拍卖、煤炉(Mercari)、乐天和亚马逊日本站等截然不同的平台。以往使用单机爬虫,经常出现运行中崩溃的情况——单点故障、带宽利用率不足、数据存储混乱,这三大痛点令人困扰。 本文分享一套基于Scrapy + Redis的分布式爬虫方案,专门解决

时间:2026-06-30 16:16
详细PuTTY 0.81安装教程 SSH远程连接与自定义路径设置

详细PuTTY 0.81安装教程 SSH远程连接与自定义路径设置

​ PuTTY(简称PT)是一款轻量级开源SSH Telnet客户端,凭借简洁高效的特性,多年来始终是系统管理员与开发者进行远程连接的首选利器。本教程将详细介绍PuTTY 0 81版本的完整安装过程,并指导您自定义安装路径,以便更灵活地管理SSH远程连接工具。 安装准备 首先需要说明的是,整个安装流

时间:2026-06-30 16:16
在线教育系统必备功能:直播课堂与题库考试架构

在线教育系统必备功能:直播课堂与题库考试架构

很多人一想到做在线教育系统,第一反应往往是先把直播间和课程播放器搭起来,觉得“能看课”就万事大吉了。真到落地那天才发现,系统能不能顺滑跑起来,关键全藏在那些细节里——课程怎么组织、学习进度怎么记、考试怎么处理、后台怎么管得住。前端看起来就几个页面,后端其实是一整条业务链路。不管你是要做在线教育APP

时间:2026-06-30 16:15
ZStack源码级AI诊断套件让故障排查秒出答案

ZStack源码级AI诊断套件让故障排查秒出答案

一次故障排查,到底要花多少时间? 运维人员处理私有云、虚拟化平台的问题,流程大致都是这样:先翻日志看现象,再去文档里找对应机制,然后搜社区有没有类似案例,最后综合判断给出答复。简单问题半小时,复杂问题可能要跨天——而这些时间里,大部分精力耗在了“找信息”而不是“做决策”上。 类似的问题,也许每天都在

时间:2026-06-30 16:15
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜