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
baseUrlin Ihrertsconfig.jsonverwenden. Vite berücksichtigttsconfig.jsonstandardmäßig nicht. Daher müssen Sie möglicherweisevite-tsconfig-pathsselbst 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=forksSegmentierungsfehler 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 failedAbort trap: 6interner 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