101

アプリケーションのデバッグにGruntでnode-inspectorを使用した人はいますか? そうでない場合、Grunt ベースのアプリのデバッグ ツールをお勧めできますか?

私はサーバー側アプリ用にnodejsを使用しており、 Gruntで個別のタスクを使用しています(これは、ユーザーがタスクを個別に実行できるためです)。

4

7 に答える 7

135

grunt をデバッグで実行するには、grunt スクリプトをノードに明示的に渡す必要があります。

node-debug $(which grunt) task

debugger;そしてあなたのタスクに一行入れてください。node-inspector次に、デバッグ ツールを含むブラウザを開きます。

編集 2014 年 2 月 28 日

node-inspectornode-debug状態でノードを起動し--debug、ブラウザーを開いてページを開き、最初の行に到達するかブレークポイントを設定node-inspectorすると停止するコマンドを追加しました。debugger

2015 年 1 月 30 日編集

Windows では、少し複雑です。手順については、@e.gluhotorenko からの回答を参照してください。

于 2012-10-05T03:56:40.510 に答える
39

Windows ソリューション

走る

node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname

ディレクトリ内の cmd から、Gruntfile.js. debugger;必要なところに線を引くことを忘れないでください。

于 2012-11-18T18:12:08.753 に答える
7

デバッグするには、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;これで、最初の休憩の後で[続行]をクリックすると、回線を中断できます

かなり不器用ですが、これまでに見つけた唯一の方法です。

于 2012-09-26T20:21:30.433 に答える
6

私は最近、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

于 2013-09-27T15:27:06.107 に答える
4

アプリを実行して 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');
    });
于 2013-09-14T06:52:19.753 に答える
2

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
    }
  ]
}

于 2019-02-07T13:57:23.400 に答える