我正在探索hap17 async / await。我的代码工作正常,但我很好奇为什么它以不同的格式转换ts代码。意味着如果我没有在tsconfig文件中设置"module": "commonjs"
,那么在tsc之后它会生成js代码,它将await转换为带有switch case的_awaiter。如果我设置"module": "commonjs"
,那么它将等待转换为yield。为什么会这样?
如果我想在js文件中转换相同的await怎么办?然后配置应该是什么?
我的tsconfig文件就像
`{
"compilerOptions": {
"outDir": "build",
"sourceMap": true,
"allowJs": true,
"target": "es6",
"removeComments": false,
"noImplicitAny": false,
"module": "commonjs",
},
"include": [
"web/*.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}`
Ts文件代码
var server = new Hapi.Server({
listener: http2.createServer(),
host: 'localhost',
port: 3000,
tls: true,
})
const init = async () => {
try {
await server.register({register: routes, name: "test"})
await server.start();
console.log(`Server running at: ${server.info.uri}`);
} catch (err) {
console.log(err);
}
};
init();
当我tsc
时,我期待js文件中的代码也相同,即async / await。
但它将async await转换为以下格式
const init = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
yield server.register({ register: base_route_1.default, name: "test" });
yield server.start();
console.log(`Server running at: ${server.info.uri}`);
}
catch (err) {
console.log(err);
}
});
init();