アプリケーションのデバッグにGruntでnode-inspectorを使用した人はいますか? そうでない場合、Grunt ベースのアプリのデバッグ ツールをお勧めできますか?
私はサーバー側アプリ用にnodejsを使用しており、 Gruntで個別のタスクを使用しています(これは、ユーザーがタスクを個別に実行できるためです)。
アプリケーションのデバッグにGruntでnode-inspectorを使用した人はいますか? そうでない場合、Grunt ベースのアプリのデバッグ ツールをお勧めできますか?
私はサーバー側アプリ用にnodejsを使用しており、 Gruntで個別のタスクを使用しています(これは、ユーザーがタスクを個別に実行できるためです)。
grunt をデバッグで実行するには、grunt スクリプトをノードに明示的に渡す必要があります。
node-debug $(which grunt) task
debugger;
そしてあなたのタスクに一行入れてください。node-inspector
次に、デバッグ ツールを含むブラウザを開きます。
node-inspector
node-debug
状態でノードを起動し--debug
、ブラウザーを開いてページを開き、最初の行に到達するかブレークポイントを設定node-inspector
すると停止するコマンドを追加しました。debugger
Windows では、少し複雑です。手順については、@e.gluhotorenko からの回答を参照してください。
走る
node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname
ディレクトリ内の cmd から、Gruntfile.js
. debugger;
必要なところに線を引くことを忘れないでください。
デバッグするには、binの下のgruntファイルを変更する必要があります。私のマシンでは、gruntがグローバルにインストールされているため、/ usr / local / lib / node_modules / grunt / binに移動し、ファイルを開いて変更しました。
#!/usr/bin/env node
に
#!/usr/bin/env node --debug-brk
--debug-brkは、実行されたjavascriptの最初の行で中断します。
ただし、ノードインスペクターのドロップダウンでタスクjsファイルを見つけることができないため、それだけでは十分ではありません。そのため、デバッグするファイルを変更して、debugger;
場所を追加する必要があります。ブレークポイントを発生させたい。debugger;
これで、最初の休憩の後で[続行]をクリックすると、回線を中断できます
かなり不器用ですが、これまでに見つけた唯一の方法です。
私は最近、grunt ワークフローの残りの部分で node-inspector を簡単に構成するために grunt-node-inspector を作成しました。
以下は、grunt-node-inspector、grunt-concurrent、および grunt-shell を使用して grunt タスクをデバッグする方法を示す Gruntfile のセクションです: https://github.com/CabinJS/Cabin/blob/master/Gruntfile。 js#L44-L77
アプリを実行して node-inspector を起動するタスクを実行しました。現在の提案よりもはるかに優れています。このタスクを gruntfile に追加するだけです。
grunt.registerTask('debug', 'My debug task.', function() {
var done = this.async();
grunt.util.spawn({
cmd: 'node',
args: ['--debug', 'app.js'],
opts: {
//cwd: current workin directory
}
},
function (error, result, code) {
if (error) {
grunt.log.write (result);
grunt.fail.fatal(error);
}
done();
});
grunt.log.writeln ('node started');
grunt.util.spawn({
cmd: 'node-inspector',
args: ['&'],
opts: {
//cwd: current workin directory
}
},
function (error, result, code) {
if (error) {
grunt.log.write (result);
grunt.fail.fatal(error);
}
done();
});
grunt.log.writeln ('inspector started');
});
2019年更新
grunt タスクをデバッグ モードで起動し、最初の行で中断する場合:
node --inspect-brk $(which grunt) taskName
特定のポートでデバッグ モードで grunt タスクを起動する場合:
node --inspect-brk=8080 $(which grunt) taskName
grunt のデバッグ セッションを実行しているノード プロセスに VSCODE をアタッチする場合は、vscode で次の構成を使用します。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach by port IP 5656",
"port": 8080
}
]
}