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

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

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

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

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

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

Репортёры

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

Снапшоты

Мокирование

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

Vitest UI

Режим браузера

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

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

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

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

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

Отладка

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

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

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

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

API

Справочник по Test API

Mock-функции

Vitest

expect

expectTypeOf

assert

assertType

Конфигурация

Настройка конфигурационного файла Vitest

Настройка Vitest

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

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

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

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

    1. Ошибка в пути. Убедитесь в правильности указанного пути к модулю. Проверьте наличие опечаток и соответствие структуры каталогов.
    1. Использование baseUrl в tsconfig.json. Vite по умолчанию не учитывает настройки, указанные в tsconfig.json. Если вам необходимо, чтобы baseUrl учитывался при разрешении модулей, установите и настройте плагин vite-tsconfig-paths.
ts
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';

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

В качестве альтернативы, измените путь к модулю, чтобы он не зависел от корневой директории, указанной в baseUrl:

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) - это означает, что модуль был загружен еще до того, как тестовый файл начал выполняться - скорее всего, в файле настройки. Чтобы исправить ошибку, удалите импорт или очистите кэш в конце файла настройки. Имейте в виду, что в этом случае файл настройки и ваш тестовый файл будут ссылаться на разные модули.

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

sideEffect();

vi.resetModules();

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

Эта ошибка может произойти, когда NodeJS's fetch используется со значением по умолчанию pool: 'threads'. Эта проблема отслеживается в issue 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