node.js - Jest nu rezolvă importurile locale ESM


Am un proiect Typescript cu două fișiere, a.ts și b.ts. Import pe acesta din urmă în a.ts astfel

import * from "./b.js"

Acest lucru funcționează bine. Typescript înțelege. Totuși, când rulez Jest (folosind ts-jest), primesc

Cannot find module './b.js' from 'a.ts'

Cum pot să fac Jest să înțeleagă că importul .js este încă un fișier .ts atunci când rulez testul?

Răspuns #1

Deja l-am găsit. A trebuit să adaug următoarele în jest.config.ts

moduleNameMapper: {
   '^(\\.{1,2}/.*)\\.js$': '$1',
},

Acesta mapează fișierele .js la o versiune fără extensie, pe care Jest (adică ts-node în fundal) o poate găsi apoi.

Notă: este necesar să ai preset: 'ts-jest', dar deja îl aveam înainte.

Răspunsul #2

Există multe motive pentru care eroarea „nu se poate găsi modulul” poate apărea în TypeScript:

  1. Pachetul nu este instalat.
  2. Este ceva în neregulă cu folderul node_modules.
  3. Importul pachetului conține o greșeală de ortografie.
  4. Ceva nu este în regulă cu fișierul tău tsconfig.json.