node.js - Hur får man @babel/register att transpile ESM-importer?


Jag använder följande för att transpilera TypeScript-filer vid körning.

import babelRegister from "@babel/register"

babelRegister({
  presets: [
    "@babel/preset-env",
    "@babel/preset-react",
    "@babel/preset-typescript",
  ],
  extensions: [".tsx"],
  cache: false,
})

Allt fungerade bra tills jag försökte migrera kodbasen från CommonJS till ESM.

Enligt Sindre Sorhus måste man ersätta require med import och lägga till .js när ingen filändelse angavs (./src/routers/Static hänvisar till ./src/routers/Static.tsx).

Jag ersatte följande

const StaticRouter = require("./src/routers/Static").default

med

import StaticRouter from "./src/routers/Static.js"

Nu kastas följande fel.

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/sunknudsen/Code/sunknudsen/sunknudsen-website/src/routers/Static' imported from /Users/sunknudsen/Code/sunknudsen/sunknudsen-website/server.js

Hur kan jag kringgå felet?

Tack för att du hjälper till!