node.js - Jest fungerer ikke med fs/promises typescript
Jeg prøver å legge til jest i TypeScript-prosjektet mitt for testing, men når jeg kjører jest, fortsetter det å gi meg feilen
● Test suite failed to run
Cannot find module 'fs/promises' from 'src/path/to/file'
Require stack:
src/path/to/file
test/test.ts
> 3 | import fsp from 'fs/promises';
at Resolver.resolveModule (node_modules/jest-resolve/build/resolver.js:311:11)
at Object.<anonymous> (src/path/to/file.ts:3:1)
Selve programmet kjører fint, men hver gang jeg prøver å kjøre jest på det, støter det på dette problemet. Jeg har prøvd å legge til jest.mock('fs');, som ikke hjalp, og å legge til jest.mock('fs/promises'); gir samme feil i testfilen.
Jeg har lest at visse versjoner av Node ikke støtter 'fs/promises' og i stedet trenger require('fs').promises, som jeg har prøvd og fortsatt ikke fungerer (jeg bruker Node-versjon 12).
Hvordan kan jeg konfigurere jest for å kunne laste 'fs/promises'? Jeg har inkludert min jest.config.js-fil nedenfor:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testPathIgnorePatterns: [
'/node_modules/',
'/out/',
],
moduleDirectories: [
'.',
'node_modules'
],
moduleFileExtensions: [
'ts',
'tsx',
'js',
'jsx'
]
}
Svar #1
Det viser seg at Jest tolker 'fs/promises' som en mappe i filsystemet, noe som er feil da dette er et API fra fs-modulen. For å fikse dette, legg ganske enkelt til
moduleNameMapper: {
"fs/promises": "<rootDir>/node_modules/fs-extra/lib/fs"
}
til jest.config.js for å fortelle Jest å mappe modul 'fs/promises' til filen <rootDir>/node_modules/fs-extra/lib/fs, eller hvor enn fs-modulen er definert i filsystemet ditt.
