node.js - Hur man fixar "Syntaxfel - Stöd för den experimentella syntaxen 'decorators-legacy' är för närvarande inte aktiverad" utan babel
Jag skapade ett testprojekt här: https://github.com/baleksandr48/babel-question
Kort sagt: Jag skapade en NextJS-applikation och vill använda filer i pages/* för att rendera sidor, och filen pages/api/[...catchAll].ts för att hantera andra förfrågningar. Jag bestämde mig för att lägga till NestJS - det gör att jag kan dela hela koden i moduler.
Vad är problemet: NestJS använder dekoratörer och när jag klickar på knappen "hämta data" får jag ett fel:
Syntaxfel - Stöd för den experimentella syntaxen 'decorators-legacy' är för närvarande inte aktiverad
Jag googlade lite och löste detta problem genom att lägga till en .babelrc-fil:
{
"presets": ["next/babel"],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
}
Men jag undrar frågan: kan jag lösa det utan Babel? När jag tar bort .babelrc-filen och kör kommandot ts-node backend/main.ts fungerar min applikation utan fel.
Varför? Har jag rätt att när jag kör backend separat så transpilerar jag typescript till es5 (som jag har satt i tsconfig.json) och node fungerar bra med es5. Men när jag kör appen med npm run dev, vad händer då?
- Har inte koden transpilerats till ES5?
- är inte allt som jag har i
pages/apibara exekverat på serversidan via node, men inte via webbläsaren? - om koden har körts i webbläsaren, fungerar inte webbläsaren bra med es5?
Vänligen beskriv för mig vad skillnaden är mellan att initiera backend-appen genom npm run dev och ts-node backend/main.ts ?