ノードデバッガーの「最初の行でブレーク」機能を無効にするコマンドライン引数または環境変数はありますか?
ノードには、実際には2つのデバッガー概念があります。V8デバッガー(TCPベースのプロトコルを使用)とノードコマンドラインデバッガー(CLI)です。
node debug app.js
を実行すると、マスターノードプロセスでデバッガーCLIが実行され、デバッグされたスクリプト(node --debug-brk app.js
)に対して新しい子ノードプロセスが生成されます。オプション--debug
または--debug-brk
は、子プロセスでV8デバッガーをオンにするために使用されます。
--debug
と--debug-brk
の違いは、後者は最初の行にブレークポイントを追加するため、実行はすぐにそこで停止するということです。
私はあなたにこの解決策を提案します:
ウェブサーバーから子プロセスを作成する場合は、node --debug
ではなくnode debug
を実行してください。このようにして作成される子プロセスは1つだけで、アプリケーションを実行していて、最初の行で一時停止されません。
V8デバッガープロトコル -ノード組み込みCLIデバッガー node-inspector をサポートするデバッグツールを使用できるようになりました。または、独自のデバッガーフロントエンド(GUI ) もし良かったら。 (これは、CLIデバッガーをバックグラウンドで実行することによって達成しようとしていることだと思いますか?)
組み込みCLIを使用することにした場合は、別の子プロセスをもう1つ作成し、ノードCLIデバッガーにステップ1で開始したプロセスに接続するように指示します。
node debug localhost:5858
前と同じように続けます。
自分で答えを探しているときにこれを見つけました-単に実行できるようです
node-debug --debug-brk=0 (progname)
これが誰かを助けることを願っています。
mkdir run_as_devtools
cd run_as_devtools
touch manifest.json
touch run_as_devtools.js
run_as_devtools.js:
if (location.protocol === 'chrome-devtools:' && location.href.match(/ws=localhost/))(function () {
'use strict';
setTimeout(function () {
try {
document.querySelector('html /deep/ .long-click-glyph').click();
} catch (e) {
console.log(e);
}
}, 500);
})();
manifest.json:(chromevoxのキーを使用するため、chromevoxでは使用しないでください)
{
"content_scripts": [{
"js": [ "run_as_devtools.js" ],
"matches": [ "<all_urls>" ]
}],
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
"manifest_version": 2,
"name": "Elevated Devtools extension",
"version": "1.0"
}
Chromeの設定-その他のツール-拡張機能-開発者モード-解凍された拡張機能を読み込み-select run_as_devtools folder
追伸Nodeインスペクターマネージャー https://stackoverflow.com/a/43018133/4831179
ノードv6からv7に切り替えるだけで同じ問題を解決しました
Blackmiaoolのアイデアに似ていますがより単純です。ノードv8を使用すると、スクリプトを--inspectで開始できます。次のコードが含まれている場合、Chrome devtoolsでデバッグウィンドウを開くと、デバッガーのポイントに直接移動できます。さらに、 "continue "ボタンをクリックすると、replに戻る前にコードを実行できます。
// app_Shell.js
var UserModel = require("./some_user_model");
function looper() {
var Tmp = { UserModel: UserModel };
debugger;
setTimeout(looper, 100);
}
looper();
シェルスクリプトでは、次のようなことができます。
echo "Click the 'Open dedicated DevTools for Node' link"
python -mwebbrowser about:inspect
node --inspect app_Shell.js