node.js - Jest løser ikke ESM lokale imports
Jeg har et Typescript-projekt med to filer, a.ts og b.ts. Jeg importerer den sidstnævnte i a.ts sådan her
import * from "./b.js"
Dette fungerer fint. Typescript forstår det. Men når jeg kører Jest (ved brug af ts-jest), får jeg
Cannot find module './b.js' from 'a.ts'
Hvordan kan jeg få Jest til at forstå, at .js-importen stadig er en .ts-fil, når testen kører?
Svar #1
Har allerede fundet det. Jeg måtte tilføje følgende til jest.config.ts
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
Den kortlægger .js-filnavne til en version uden filendelse, som Jest (dvs. ts-node under motorhjelmen) så kan finde.
Bemærk: at have preset: 'ts-jest' er også nødvendigt, men det havde jeg allerede før.
Svar #2
Der er mange grunde til, at fejlen "kan ikke finde modul" kan opstå i TypeScript:
- Pakken er ikke installeret.
- Der er noget galt med node_modules-mappen.
- Pakkeimporten indeholder en stavefejl.
- Der er noget galt med din tsconfig.json-fil.
