Häufige Fehler
Modul './relative-path' kann nicht gefunden werden
Wenn Sie eine Fehlermeldung erhalten, dass ein Modul nicht gefunden werden kann, kann dies mehrere Ursachen haben:
- Sie haben den Pfad falsch eingegeben. Stellen Sie sicher, dass der Pfad korrekt ist.
- Es ist möglich, dass Sie
baseUrl
in Ihrertsconfig.json
verwenden. Vite berücksichtigttsconfig.json
standardmäßig nicht. Daher müssen Sie möglicherweisevite-tsconfig-paths
selbst installieren, wenn Sie diese Funktionalität nutzen möchten.
- Es ist möglich, dass Sie
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternativ können Sie Ihren Pfad so ändern, dass er nicht relativ zum Root-Verzeichnis ist:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Stellen Sie sicher, dass Sie keine relativen Aliase verwenden. Vite behandelt diese als relativ zur importierenden Datei und nicht zum Root-Verzeichnis.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
"./mocked-file.js" kann nicht gemockt werden, da es bereits geladen ist
Dieser Fehler tritt auf, wenn die Methode vi.mock
auf ein Modul angewendet wird, das bereits geladen wurde. Vitest meldet diesen Fehler, da dieser Aufruf keine Auswirkung hat, weil gecachte Module bevorzugt werden.
Beachten Sie, dass vi.mock
immer gehoistet wird – das bedeutet, dass das Modul bereits geladen wurde, bevor die Testdatei ausgeführt wurde – höchstwahrscheinlich in einer Setup-Datei. Um den Fehler zu beheben, entfernen Sie den Import oder leeren Sie den Cache am Ende einer Setup-Datei. Beachten Sie jedoch, dass die Setup-Datei und Ihre Testdatei in diesem Fall auf unterschiedliche Module verweisen werden.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Worker konnte nicht beendet werden
Dieser Fehler kann auftreten, wenn Node.js' fetch
mit dem Standardwert pool: 'threads'
verwendet wird. Dieses Problem wird im Issue Timeout abort can leave process(es) running in the background #3077 behandelt.
Als Abhilfe können Sie zu pool: 'forks'
oder pool: 'vmForks'
wechseln.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Segmentierungsfehler und native Codefehler
Das Ausführen von nativen Node.js-Modulen in pool: 'threads'
kann zu kryptischen Fehlern im nativen Code führen.
Segmentierungsfehler (Core Dump)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
interner Fehler: unerreichbarer Code erreicht
In diesen Fällen ist das native Modul wahrscheinlich nicht für die Multi-Thread-Sicherheit konzipiert. Als Abhilfe können Sie zu pool: 'forks'
wechseln. Dadurch werden die Testfälle in mehreren node:child_process
-Instanzen anstelle von mehreren node:worker_threads
-Instanzen ausgeführt.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks