我想在visual studio代码中调试包含async/await的js文件,但它提醒我vscode不支持它.我该怎么做才能使vscode支持async/await?
我安装了nodejs 7.3.0,我有这个代码:
let getContent = function (url) {
// return new pending promise
return new Promise((resolve, reject) => {
// select http or https module, depending on reqested url
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
// temporary data holder
const body = [];
// on every content …Run Code Online (Sandbox Code Playgroud) 我在Vscode 1.33.1,Node 11.12,Typescript 3.4.3,vscode-chrome-debug-core 6.7.46上,我正在尝试调试React Native项目。
只要我不打await,一切都会正常进行。但是,当我点击包含的行时,await在该await行之后(包括该await行),我不会遇到任何断点。代码正常运行,但是调试器陷入混乱。如果我在该await行之前放置一个断点并尝试进入/移出/跳出,它会跳入难看的index.bundle代码。
这发生在我的应用程序中的多个位置,因此也不是孤立的情况。
这是我在中的活动配置launch.json:
{
"name": "Debug iOS (sim)",
"program": "${workspaceRoot}/.vscode/launchReactNative.js",
"type": "reactnative",
"request": "launch",
"platform": "ios",
"sourceMaps": true,
"outDir": "${workspaceRoot}/.vscode/.react",
"smartStep": true,
"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js",
"${workspaceFolder}/lib/**/*.js",
"<node_internals>/**/*.js"
]
},
Run Code Online (Sandbox Code Playgroud)
从配置中可以看出,我已经尝试过smartStep(无论如何都不允许使用该代码。)skipFiles(除非我明确介入,否则它确实会跳过文件,因此它可以工作,但不能解决问题)。我还看到了使用Typescript + VSCode调试Node.js异步/等待,但是我已经尝试过smartStep了,对该问题的关注已经很久了,许多版本已经解决了。
如何调试包含await正确的Typescript代码?
更新:当我绕过Vscode调试/配置并在Chrome和Vanilla终端(例如react-native run-ios)中调试时,它可以完美运行。因此,这与Vscode或其配置有关。
更新2:我的目标是ES2017,这是我的tsconfig:
{
"compilerOptions": {
"target": "es2017",
"module": …Run Code Online (Sandbox Code Playgroud) node.js async-await typescript react-native visual-studio-code