gpt4 book ai didi

javascript - 使用 Typescript+VSCode 调试 Node.js 异步/等待

转载 作者:搜寻专家 更新时间:2023-10-30 20:44:00 28 4
gpt4 key购买 nike

我检查了以下答案:

async await with nodejs 7

How to debug async/await in visual studio code?

但是都没有解决我的问题。

我希望能够使用 Node.js v7.4.0 从 VSCode 调试 native Async/Await,而无需可怕的 Typescript 转译版本。我能够让 Typescript 输出正确的代码,即没有 __awaiter 等。但是,一旦我尝试调试代码,就会出现所有已转换的状态机代码!?所以我可以调试代码,它只是不是我想要调试的代码。有什么办法可以防止被调试的代码有转译后的状态机代码吗?

这是我的配置文件:

tsconfig.json

{
"compilerOptions": {
"target": "es2017",

"module": "commonjs",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "lib",
"noUnusedParameters": false,
"noUnusedLocals": false,
"skipLibCheck": true
//"importHelpers": true
},
"exclude": [
"node_modules"
]
}

启动.json

{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/jest-cli/bin/jest.js",
"stopOnEntry": false,
"cwd": "${workspaceRoot}",
//"preLaunchTask": "tsc",
"runtimeExecutable": null,
"args": [
"--runInBand"
],
"runtimeArgs": [
"--harmony-async-await",
"--no-deprecation"
],
"env": {
"NODE_ENV": "development"
},
"console": "integratedTerminal",
"sourceMaps": true,
"outFiles": [
"${workspaceRoot}/{lib}/**/*.js"
],
"skipFiles": [
"node_modules/**/*.js",
"lib/**/*.js"
]
}

为了进一步说明我的意思,这里是输出的 javascript 中的一段代码:

let handler = subscription.messageSubscription.handler;
debugger;
await handler(message.message, context);

但是在调试时它看起来像这样:

case 4:
handler = subscription.messageSubscription.handler;
debugger;
return [4 /*yield*/, handler(message.message, context)];
case 5:

最佳答案

我将 "smartStep": true 添加到 launch.json 并根据需要调试等待/异步模式(使用 Node v8.4.0)。

这是我的 launch.json:

{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceRoot}/src/main.ts",
"cwd": "${workspaceRoot}",
"console": "integratedTerminal",
"outFiles": [ "${workspaceRoot}/dist/*.js" ],
"sourceMaps": true,
"preLaunchTask": "build",
"smartStep": true
}
]

有关详细信息,请参阅 https://code.visualstudio.com/updates/vApril#_smart-code-stepping .

这不是一个完美的解决方案,因为使用 smartStep 您无法调试到库代码中,因此如果您想调试到库中,您必须手动注释掉此选项。也许有人知道如何解决这个小小的不便。

关于javascript - 使用 Typescript+VSCode 调试 Node.js 异步/等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644827/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com