2017-01-13 16 views
3

私は、次の答えをチェックしませんしました:とデバッグのNode.js 7非同期/待って活字体+ VSCode

async await with nodejs 7

How to debug async/await in visual studio code?

しかしどちらも私の問題を解決しました。

恐ろしいTypescript蒸散バージョンなしでNode.js v7.4.0を使用してVSCodeからネイティブのAsync/Awaitをデバッグできるようにします。私はTypescriptに正しいコード、つまり__awaiterなどを出力しないようにすることができます。しかし、コードをデバッグしようとすると、すべてのトランスビルド状態のマシンコードが表示されます。だから、コードをデバッグすることができます。デバッグしたいコードだけではありません。デバッグされたコードがトランシルドステートマシンコードを持つのを防ぐための方法はありますか?ここで

は、私が持っている設定ファイルは、以下のとおりです。さらに、ここで、私が上だものを説明するために

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

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

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

はスニペットです出力される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: 

答えて

0

私は"smartStep": trueにlaunch.jsonを追加し、必要に応じてのawait /非同期パターンをデバッグすることは(ノード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でライブラリコードにデバッグできないため、ライブラリにデバッグする場合は手動でこのオプションをコメントアウトする必要があります。たぶん誰かがこの小さな不便を解決する方法を知っています。

関連する問題