Skip to content
Vitest 2
Main Navigation РуководствоAPIКонфигурацияРежим браузераПродвинутый
2.1.9
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

Начало работы

Функциональность

Рабочая область

Интерфейс командной строки

Фильтрация тестов

Репортёры

Покрытие кода

Снапшоты

Мокирование

Тестирование типов

Vitest UI

In-source тестирование (Тестирование в исходном коде)

Контекст теста

Тестовая среда

Расширение проверок (matchers)

Интеграции с IDE

Отладка

Сравнения с другими тестовыми фреймворками

Руководство по миграции

Распространенные ошибки

Profiling Test Performance

Улучшение производительности

Содержание страницы

Распространенные ошибки ​

Не удаётся найти модуль './relative-path' ​

Если вы получаете ошибку "модуль не найден", это может указывать на несколько возможных причин:

    1. Вы допустили ошибку в пути. Убедитесь, что путь указан верно.
    1. Возможно, вы полагаетесь на baseUrl в вашем tsconfig.json. 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();

Не удалось завершить работу воркера ​

Эта ошибка может возникать при использовании NodeJS fetch с пулом по умолчанию pool: 'threads'. Эта проблема отслеживается в задаче Timeout abort can leave process(es) running in the background #3077.

В качестве временного решения вы можете переключиться на pool: 'forks' или pool: 'vmForks'.

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

export default defineConfig({
  test: {
    pool: 'forks',
  },
});
bash
vitest --pool=forks

Ошибки сегментации и ошибки в нативном коде ​

Запуск нативных модулей NodeJS в pool: 'threads' может вызывать непонятные ошибки, возникающие из нативного кода.

  • Segmentation fault (core dumped)
  • thread '<unnamed>' panicked at 'assertion failed
  • Abort trap: 6
  • internal error: entered unreachable code

В этих случаях нативный модуль, скорее всего, не поддерживает безопасную работу в многопоточной среде. В качестве временного решения вы можете переключиться на pool: 'forks', который запускает тестовые случаи в нескольких node:child_process вместо нескольких node:worker_threads.

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

export default defineConfig({
  test: {
    pool: 'forks',
  },
});
bash
vitest --pool=forks
Pager
Предыдущая страницаРуководство по миграции
Следующая страницаProfiling Test Performance

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors

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

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors