2016-12-07 3 views
0

NW.JSデスクトッププログラムをアタッチまたは起動するためにVisual Studioコードで動作するlaunch.jsonの例はありますか?はい、NW.JSはクロムデバッグを使用していますので、直接デバッグすることができます。しかし、VS CODEからデバッグしてシングルステップを実行できるのは良いことです。Visual StudioコードからNW.JSプログラムを起動して添付してください。

私は以下の添付

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "name": "DOM Debug", 
      "type": "chrome", 
      "request": "launch", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     }, 
     { 
      "name": "Node Debug", 
      "type": "chrome", 
      "request": "launch", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "url": "chrome-extension://*/_generated_background_page.html", 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     } 
    ] 
} 

(以下は動作しません)、それはポート9222を使用すると仮定して、ログです:

Vscode log

答えて

0

私はのための修正デバッガとNW.JSアプリケーションをデバッグすることができますlaunch.jsonファイルのChrome拡張機能と以下の設定。ブラウザのコンテキストをデバッグするための構成と、ノードのコンテキストをデバッグするための構成があります。私は混合モードを試みたが、ブレークポイントは決して打たれなかった。この設定では、アプリケーション・ファイルとNW.JS実行可能ファイルが同じディレクトリにあると想定しています。

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "chrome", 
      "request": "launch", 
      "name": "nwjs DOM debug", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     }, 
     { 
      "type": "chrome", 
      "request": "launch", 
      "name": "nwjs Node debug", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "url": "chrome-extension://*/_generated_background_page.html", 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     } 
    ] 
} 

見つかったすべてのスクリプトが読み込まれてマップされるように機能を変更して、デバッガfor Chrome拡張機能を変更しました。デバッガは通常、extension://およびchrome-extension:// scriptsを除外します。ファイル

[拡張パス] \。vscodeの\拡張\ msjsdiag.debugger-用クロム-2.3.2 \ node_modules \ vscode - クロム - デバッグ・コア\アウト\のsrc \クローム\のchromeDebugAdapter.js変更関数はfalseを返すようにIgnoreScript()を実行します。

shouldIgnoreScript(script) { 
    return false;//script.url.startsWith('extensions::') || script.url.startsWith('chrome-extension://'); 
} 

1つの副作用は、デバッガは、ノードのコンテキストで起動したときにデバッガがNW.JS.のネイティブノードモジュールを見つけることができないと言って、多くのメッセージを取得しますですあなたが彼らに足を運ぶ必要がない限り大きな問題はありません。

この設定は私には役立ちますが、まだまだ薄いですし、デバッガのWebソケット接続が一見ランダムになります。しかし、多くのconsole.logs()に頼らずにデバッグするのに十分な信頼性があります。

+0

exports.targetFilter = target => target && (!target.type || target.type === 'page'); 

を置き換える私は(実際には最上級!)未払いに続く命令(更新打ち上げを参照してください。 json)を編集して拡張子を編集し、これをすべてwsフォルダに格納します。私はDOMデバッガを起動していますが、まだ灰色のブレークポイントを示しています。ログを表示することはできますか? (ウィンドウ7,64ビット)。 VScode 1.7.2(ただし、コンピュータ上のノード7.2を実行中) –

+0

ああ、残念ながら動作しませんでした。確かに、私はあなたのログを見てみましょう。デバッガの詳細ログにDebugger.scriptParsedイベントがあり、jsファイルが記述されていることを確認してください(または上記の方法でlogger.log(script.url)を投げます)。私は最初にChromeでjavascriptファイルを単一の評価(最適化の可能性がありますか?)に結合していたプロジェクトをセットアップし、デバッガがそれらをスキップするときに問題が発生しました。しかし、コードを追加した後、Chromeは全ファイルの解析とデバッガの作業を開始するように切り替えました。 – Craig

+0

私は、ログへのリンクを追加しました。私はindex.jsファイルに約100行のjavascriptを追加しようとしました。私は解析メッセージが表示されません。私も組み込みのデバッガでデバッグに問題があります。私はonload = "start()"メソッドにブレークポイントを置くと、ソースタブの大きなプレスCNTRL-Pを見てください。ソースではなく、ブレークポイントではありません。 –

1

クレイグの答えを更新しました。

Chrome拡張機能バージョン3.1.8のためのデバッガは、別の変更を必要とします。
[extensions path]\.vscode/extensions/msjsdiag.debugger-for-chrome-3.1.8/out/bundle.jsで が

exports.targetFilter = null; 
関連する問題