You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3+Vite项目使用Cypress组件测试提示需安装@vitejs/plugin-vue报错如何解决

问题根因

报错核心是Cypress启动测试用的Vite实例没有加载@vitejs/plugin-vue插件,具体原因有两点:

  • 你使用的@cypress/vite-dev-server@2.2.0是较旧版本,对Vite配置文件的加载逻辑存在缺陷,即使你指定了configFile路径,也无法正确读取ESModule格式的vite.config.js中的plugins配置。
  • Cypress 9.x的插件运行环境默认是CommonJS,你项目中的vite.config.js用的是ESModule导出语法(export default),配置文件加载直接失败,相当于Vite完全用默认配置启动,没有注册Vue解析插件。

修复方案

方案1(最稳妥,优先选择):直接在Cypress插件配置中手动传入vue插件

修改./cypress/plugins/index.js文件,手动引入并注入@vitejs/plugin-vue,绕过配置文件加载问题:

const path = require("path");
const { startDevServer } = require("@cypress/vite-dev-server");
// 引入vue插件
const vue = require("@vitejs/plugin-vue");

module.exports = (on, config) => {
  on("dev-server:start", (options) => {
    return startDevServer({
      options,
      viteConfig: {
        // 手动指定plugins,绕过配置文件加载问题
        plugins: [vue()],
        // 如果还有其他vite配置比如别名、全局样式也可以在这里添加
        resolve: {
          alias: {
            '@': path.resolve(__dirname, '../../src')
          }
        }
      },
    });
  });
};

方案2:修改vite.config.js为CommonJS格式

如果你想继续复用项目原有的Vite配置,把vite.config.js改成CommonJS导出即可:

const { defineConfig } = require("vite");
const vue = require("@vitejs/plugin-vue");

module.exports = defineConfig({
  plugins: [vue()],
});

额外注意

你提供的NavigationBtn.vue组件存在递归引用问题:组件内部又引入了自身作为子组件,修复完Vite插件问题后会触发递归渲染报错,需要调整这个组件的逻辑,避免自引用。

内容的提问来源于stack exchange,提问作者Souriya Phongsavanh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:07