node.js - Jest löser inte ESM lokala importeringar
Jag har ett Typescript-projekt med två filer, a.ts och b.ts. Jag importerar den sistnämnda i a.ts så här
import * from "./b.js"
Detta fungerar bra. Typescript förstår. Men när jag kör Jest (med ts-jest) får jag
Cannot find module './b.js' from 'a.ts'
Hur kan jag få Jest att förstå att .js-importen fortfarande är en .ts-fil när jag kör testet?
Svar #1
Hittade det redan. Jag var tvungen att lägga till följande i jest.config.ts
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
Den kopplar .js-filnamn till en version utan filändelse, som Jest (dvs. ts-node under huven) sedan kan hitta.
Obs: att ha preset: 'ts-jest' är också nödvändigt, men det hade jag redan innan.
Svar #2
Det finns många anledningar till varför felet "kan inte hitta modul" kan uppstå i TypeScript:
- Paketet är inte installerat.
- Något är fel med mappen node_modules.
- Paketimporten innehåller ett stavfel.
- Det är något fel på din tsconfig.json-fil.
