誰かが node-inspector with Grunt をアプリケーションのデバッグに使用しましたか?そうでない場合、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
Gruntfile.js
を含むディレクトリのcmdから。 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ワークフローで簡単に構成します。チェックアウト: https://github.com/ChrisWren/grunt-node-inspector
Grunt-node-inspector、grunt-concurrent、およびgrunt-Shellを使用してgruntタスクをデバッグする方法を示すGruntfileのセクションを次に示します。 https://github.com/CabinJS/Cabin/blob/ master/Gruntfile.js#L44-L77
アプリを実行し、ノードインスペクターを起動するタスクを実行しました。現在の提案よりもはるかに優れています。このタスクを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');
});
ここで素晴らしい答え。 2017年に、今あなたはできる
node --inspect --debug-brk $(which grunt) taskName
どのようなものを印刷します。
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471
クロムでそのURLを開くと、準備完了です!
Node 7.3.0を使用しています。Macを使用しています。Windowsで使用するには、他の投稿のアドバイスに従う必要があります。
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
}
]
}