node.js - 如何在不使用 babel 的情况下修复 “Syntax error - 当前未启用对实验语法 'decorators-legacy' 的支持”
我在这里创建了一个测试项目:https://github.com/baleksandr48/babel-question
简而言之:我创建了一个 NextJS 应用程序,并希望使用 pages/* 文件来渲染页面,以及 pages/api/[...catchAll].ts 文件来处理其他请求。我决定添加 NestJS——它允许我将整个代码划分为模块。
问题是什么:NestJS 使用装饰器,当我点击“获取数据”按钮时,我遇到一个错误:
语法错误 - 当前尚未启用对实验性语法 'decorators-legacy' 的支持
我查了一下谷歌,通过添加 .babelrc 文件解决了这个问题:
{
"presets": ["next/babel"],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
}
但是我想知道这个问题,我能在不使用 Babel 的情况下解决吗?当我删除 .babelrc 文件并运行命令 ts-node backend/main.ts 时,我的应用程序可以正常运行,没有错误。
为什么?我说得对吗,当我单独运行后端时,我会将 TypeScript 转译为 es5(如我在 tsconfig.json 中设置的那样),Node 可以很好地运行 es5。但当我使用 npm run dev 运行应用时,会发生什么?
- 代码不是已经被转译成 ES5 吗?
- 难道我在
pages/api中的所有内容不是只通过 Node 在后端执行,而不是通过浏览器吗? - 如果代码在浏览器中已经被执行,难道浏览器不兼容 ES5 吗?
请向我描述通过 npm run dev 和 ts-node backend/main.ts 初始化后端应用之间的区别是什么?