express - Webpack-konfigurationsfil skriven i TypeScript fungerar inte


Jag använder för närvarande följande konfiguration för mitt projekt, som i princip är en Express API som använder TypeScript:

  • webpack.common.js
  • webpack.dev.js
  • webpack.prod.js

Som förklaras i Webpack-dokumentationen använder jag en gemensam konfiguration, som jag utökar baserat på utvecklingsstadiet (t.ex. dev, prod). När jag bygger appen använder jag följande npm-skript:

webpack --config webpack.dev.js och webpack --config webpack.prod.js

Applikationen är byggd, och allt fungerar alldeles utmärkt. Nu skulle jag vilja migrera mina konfigurationsfiler till TypeScript. Enligt Webpack-dokumentationen är det möjligt och det finns tre möjligheter.

  • Ändra tsconfig.json.
  • Ändra tsconfig.json och lägg till inställningar för ts-node.
  • Installera tsconfig-paths.

Det första valet är inte lämpligt för mig eftersom min tsconfig.json baseras på @tsconfig/node20/tsconfig.json, och jag vill inte ändra module till CommonJS. Jag är inte riktigt säker på det tredje alternativet eftersom det finns några rapporter som säger att TS_NODE_PROJECT på något sätt är buggigt och bara fungerar om det används tillsammans med cross-env. Så jag bestämde mig för att gå på det andra valet.

Så här är vad jag gjorde:

  • Jag installerade alla nödvändiga beroenden (t.ex. ts-node, @types/webpack, etc.),
  • Jag lade till ts_node-konfiguration i min tsconfig.json. Så här:
  "ts-node": {
    "compilerOptions": {
      "module": "CommonJS"
    }
  }
  • Jag uppdaterar mitt skript i package.json. Så här:
"build:dev": "webpack --config webpack.dev.ts"

I dokumentationen nämns kommandot npm för att köra konfigurationen med TypeScript och ts-node inte alls. Så jag antar att jag kanske kan köra kommandot på samma sätt som jag gjorde tidigare. Så jag gjorde det och fick följande output:

webpack_utdata_fel

Här är några extra detaljer:

  • Jag definierade type:module i min package.json. Det tvingar ES6-moduler.
  • Om jag kompilerar mina konfigurationsfiler med ts-node, skulle jag få ett liknande fel om inte --esm-flaggan anges.

Så vad gör jag fel? All hjälp skulle uppskattas.