web-dev-qa-db-ja.com

mochaの--debug-brkスイッチでノードデバッガーを有効にする正しい方法は何ですか?

テスト中のモジュールにいくつかのデバッガーステートメントがあり、モジュールの状態を検査できるように、-debug-brkを設定してmochaを実行し、ブレークポイントにヒットする必要があります。残念ながら、このオプションを使用してmochaを実行すると、次の行に空白のカーソルが表示されます。テキストを入力できますが、コマンドを処理しているように見えるものは何もありません(確かにノードデバッガーのようには見えません)。

$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]

モカを起動する方法に何か問題がありますか?

63
Howard Dierking

元の質問に答えるには、node-inspectorを調べることをお勧めしますが、--debugまたは--debug-brkflagsの代わりに、debugオプションを使用してmochaを介してノードに組み込まれたCLIデバッガーを使用できます。 (ダッシュがないことに注意してください。)

あなたの例では、代わりに次のようになります:

$ mochadebugtests.js -R spec 
 debugger listen on port 5858 
 connecting ... ok 
 node_modules/mocha/bin/_mocha:7 
のブレーク5 */
 6 
 7 var program = require( 'commander')
 8、sprintf = require( 'util')。format 
 9、path = require( 'path')
 debug> [CURSOR]

繰り返しますが、debugはダッシュなしの太字の上記のとおりです。 (=

関連: https://github.com/visionmedia/mocha/issues/247

48
ELLIOTTCABLE

Nodejs( > = v6.3. )とmocha( > = 3.1. )の最新バージョンを使用すると、 V8インスペクター統合 を使用できます。

V8 Inspectorの統合により、Chrome DevToolsをNode.jsインスタンスにアタッチして、デバッグとプロファイリングを行うことができます

使用法

--inspectはV8インスペクター統合をアクティブにし、--debug-brkは最初にブレークポイントを追加します。 nodejs v7.6. および mocha v3.3. であるため、--inspect-brkの短縮形として--inspect --debug-brkを使用できます。

$ mocha --debug-brk --inspect
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node

npmスクリプトの場合

Mochaを使用するnpmテストスクリプトがある場合、end of option delimiter--を使用して、npmからmochaスクリプトにオプションを渡すことができます。

$ npm test -- --inspect --debug-brk

クロームチップ

毎回URLをコピーして貼り付ける代わりに、chrome://inspectに移動し、[リモートターゲット]セクションの適切なリンクをクリックします。

57
stropitek

node-inspector を使用してこれを機能させることができました。 1つのシェルに表示されるようにテストを実行します。

mocha --debug-brk mocha/test.js

次に、2番目のシェルでノードインスペクターを実行します。

node-inspector

ノードインスペクタがブラウザで出力するURLを表示すると、Webインスペクタでデバッグできます。

http://127.0.0.1:8080/debug?port=5858
51
Matthew Shanley

Node-insectorがインストールされている場合は、実際にnode-inspectorを最初に実行せずにMochaテストをデバッグできます。最も簡単な方法は

node-debug _mocha

chrome(Safariでも動作します)でノードテストのデバッグを開始する必要があります

テストが機能しないことがわかった理由の1つは、 http:// localhost:8080/debug?port = 5858 または http://127.0.0.1: 8080/debug?port = 5858

10
Trideep Gogoi

フラグ--inspect-brkでmochaを実行し、chromeページからchrome://inspect。]で[ノードの専用DevToolsを開く]をクリックします。専用DevToolsウィンドウで接続localhost:9229を追加して接続します自動的に。

また、デバッグするファイルにdebuggerステートメントを追加します。

(これはノードの最新バージョンとchrome 2017年10月現在)を使用しています)

3
Tom Berghuis