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

Vitest绝对路径导入仅部分组件生效问题求助

问题原因与解决方案

核心问题

你碰到的情况是因为vitest的手动别名配置写法错误,@shared/*的字符串式别名没有正确匹配新文件的路径;而旧文件能生效是vite-node缓存了之前的解析结果,新文件无缓存所以暴露了别名配置的问题。单独加具体文件的别名时,路径完全匹配自然能正常工作。

解决方案

推荐两种修复方式,选其一即可:

方案1:复用tsconfig的paths配置(更省心)

直接在vitest配置中启用vite-tsconfig-paths插件,和vite保持一致,不用手动维护两份别名配置:

修改vitest.config.ts:

import { defineConfig } from "vitest/config";
import tsconfigPaths from 'vite-tsconfig-paths'

export default defineConfig({
  plugins: [tsconfigPaths()], // 启用插件复用tsconfig的paths
  test: {
    globals: true,
    environment: 'jsdom',
  }
});

方案2:修正手动别名的正则匹配写法

如果坚持手动配置别名,需要用正则表达式来正确捕获通配符部分:

修改vitest.config.ts中的resolve.alias:

import { defineConfig } from "vitest/config";
import path from 'path'

export default defineConfig({
  resolve: {
    alias: [
      {find: "@enums", replacement: path.resolve(__dirname, './src/shared/enums') },
      {find: /^@components\/(.*)$/, replacement: path.resolve(__dirname, './src/components/$1') },
      {find: /^@shared\/(.*)$/, replacement: path.resolve(__dirname, './src/shared/$1') },
    ]
  },
  test: {
    globals: true,
    environment: 'jsdom',
  }
});

额外步骤:清理缓存

为了确保新配置生效,运行测试时加上--no-cache参数,或者删除node_modules/.vite-node文件夹清除缓存:

vitest --no-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:35:24