2017-01-13 2 views
3

나는 다음과 같은 답변을 확인하지했습니다와 디버그 Node.js를 7 비동기/기다리고 있습니다 타이프 라이터 + VSCode

async await with nodejs 7

How to debug async/await in visual studio code?

그러나 어느 쪽도 내 문제를 해결했다.

끔찍한 Typescript transpiled 버전없이 Node.js v7.4.0을 사용하여 VSCode에서 기본 Async/Await을 디버깅 할 수 있기를 원합니다. 나는 올바른 코드 즉, __awaiter 등을 출력하도록 Typescript를 얻을 수 있습니다. 그러나 일단 코드를 디버깅하려고하면 모든 변환 된 상태 머신 코드가 나타납니다! 그래서 코드를 디버깅 할 수 있습니다. 디버그하려는 코드가 아닙니다. 디버깅 된 코드가 transpiled state machine 코드를 갖는 것을 막기 위해 어쨌든 존재합니까? 여기

는 내가 가지고있는 설정 파일은 다음과 같습니다

tsconfig.json 더 나는 약에있어 무엇을 설명하기 위해

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

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

launch.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" 
    ] 
} 

, 여기에 조각입니다 출력되는 자바 스크립트의 코드 :

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: 

답변

0

내가 (노드 v8.4.0를 사용하여) 원하는대로 "smartStep": true launch.json와 await를/비동기 패턴을 디버깅 하려면 작동 추가 할 수 있습니다. 자세한 내용은

{ 
    "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를 참조하십시오

내 launch.json입니다.

smartstep으로 라이브러리 코드로 디버그 할 수 없으므로 완벽하지 않습니다. 라이브러리로 디버그하려면이 옵션을 수동으로 주석 처리해야합니다. 아마도이 사소한 불편을 해결하는 방법을 아는 사람이있을 것입니다.