Skip to content
Vitest 1
Main Navigation 指南API配置高级
1.6.1
0.34.6

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

主题

Sidebar Navigation

指南

为什么选择 Vitest

快速开始

特性

工作区

命令行界面

测试筛选

报告器

代码覆盖率

快照(Snapshot)

模拟(Mocking)

类型测试

Vitest UI

浏览器模式

源码内测试

测试上下文

测试环境

扩展匹配器

IDE 集成

调试

与其他测试运行器的比较

迁移指南

常见错误

提升性能

API

测试 API 索引

模拟函数

Vi

expect

expectTypeOf

assert(断言)

assertType

配置

管理 Vitest 配置文件

配置 Vitest

页面导航

常见错误 ​

找不到模块 './relative-path' ​

如果出现找不到模块的错误提示,可能由以下几种原因导致:

    1. 路径拼写错误。请仔细检查路径是否正确。
    1. 项目可能依赖了 tsconfig.json 中的 baseUrl。Vite 默认不会处理 tsconfig.json,因此,如果需要支持此功能,你需要安装 vite-tsconfig-paths。
ts
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';

export default defineConfig({
  plugins: [tsconfigPaths()],
});

或者修改路径,避免依赖根目录:

diff
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
    1. 检查是否使用了相对别名。Vite 会将相对别名视为相对于导入文件的路径,而不是相对于项目根目录的路径。
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    alias: {
      '@/': './src/', 
      '@/': new URL('./src/', import.meta.url).pathname, 
    },
  },
});

无法模拟 "./mocked-file.js",因为它已经被加载 ​

当 vi.mock 方法被调用在一个已经加载的模块上时,会发生这个错误。 Vitest 抛出这个错误是因为这个调用没有任何效果,因为缓存的模块会被优先使用。

请记住,vi.mock 总是会被提升(hoisted) - 这意味着该模块在测试文件开始执行之前就已经被加载了 - 最有可能是在一个 setup 文件中。 要解决这个错误,请移除导入语句,或者在 setup 文件的末尾清除缓存 - 注意,在这种情况下,setup 文件和你的测试文件将会引用不同的模块。

ts
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';

sideEffect();

vi.resetModules();

无法终止 worker ​

当 NodeJS 的 fetch 与默认的 pool: 'threads' 一起使用时,可能会发生此错误。 此问题在问题 Timeout abort can leave process(es) running in the background #3077 中被追踪。

作为一种解决方法,您可以切换到 pool: 'forks' 或 pool: 'vmForks'。

在您的配置文件中指定 pool:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'forks',
  },
});

或者在您的 package.json 脚本中:

diff
scripts: {
-  "test": "vitest"
+  "test": "vitest --pool=forks"
}
Pager
上一页迁移指南
下一页提升性能

基于 MIT 许可证 发布。

版权所有 (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/common-errors

基于 MIT 许可证 发布。

版权所有 (c) 2024 Mithril Contributors