node.js - Jest løser ikke ESM lokale importer
Jeg har et Typescript-prosjekt med to filer, a.ts og b.ts. Jeg importerer den sistnevnte i a.ts slik:
import * from "./b.js"
Dette fungerer fint. Typescript forstår. Men når jeg kjører Jest (ved bruk av ts-jest), får jeg
Cannot find module './b.js' from 'a.ts'
Hvordan kan jeg få Jest til å forstå at .js-importen fortsatt er en .ts-fil når jeg kjører testen?
Svar #1
Allerede funnet det. Jeg måtte legge til følgende i jest.config.ts
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
Den mapper .js-filnavn til en versjon uten filtypeendelse, som Jest (dvs. ts-node under panseret) deretter kan finne.
Merk: å ha preset: 'ts-jest' er også nødvendig, men jeg hadde allerede det fra før.
Svar #2
Det finnes mange grunner til at feilen «cannot find module» kan oppstå i TypeScript:
- Pakken er ikke installert.
- Noe er galt med node_modules-mappen.
- Pakkeimporten inneholder en stavefeil.
- Noe er galt med tsconfig.json-filen din.
