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.jsonoch lägg till inställningar förts-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 mintsconfig.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:modulei minpackage.json. Det tvingarES6-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.