Häufige Fehler
Modul './relative-path' kann nicht gefunden werden
Wenn Sie eine Fehlermeldung erhalten, dass ein Modul nicht gefunden werden kann, kann dies verschiedene Ursachen haben:
- Der Pfad ist möglicherweise falsch. Überprüfen Sie die Schreibweise und stellen Sie sicher, dass der Pfad korrekt ist.
- Möglicherweise verwenden Sie
baseUrl
in Ihrertsconfig.json
. Vite berücksichtigt dietsconfig.json
standardmäßig nicht. Installieren Sie dahervite-tsconfig-paths
, falls Sie auf dieses Verhalten angewiesen sind.
- Möglicherweise verwenden Sie
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternativ können Sie den Pfad so anpassen, dass er relativ zum aktuellen Verzeichnis ist:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Stellen Sie sicher, dass Sie keine relativen Aliase verwenden. Vite behandelt diese relativ zu der Datei, in der der Import erfolgt, und nicht relativ zum Projektstammverzeichnis.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Modul "./mocked-file.js" kann nicht gemockt werden, da es bereits geladen wurde.
Dieser Fehler tritt auf, wenn die vi.mock
-Methode für ein Modul aufgerufen wird, das bereits geladen wurde. Vitest wirft diesen Fehler, da dieser Aufruf keine Wirkung hat, da zwischengespeicherte Module bevorzugt werden.
Denken Sie daran, dass vi.mock
immer "gehoisted" wird - das bedeutet, dass das Modul geladen wurde, bevor die Testdatei mit der Ausführung begann - 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.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Fehler beim Beenden des Workers
Dieser Fehler kann auftreten, wenn NodeJS's fetch
mit dem Standardwert pool: 'threads'
verwendet wird. Dieses Problem wird im Issue Timeout abort can leave process(es) running in the background #3077 verfolgt.
Als Workaround können Sie auf pool: 'forks'
oder pool: 'vmForks'
umsteigen.
Geben Sie pool
in Ihrer Konfigurationsdatei an:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
Oder in Ihren package.json
-Skripten:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}