[javascript] Grunt 작업과 함께 노드 검사기 사용

누군가 Grunt 와 함께 노드 검사기를 사용 습니까? 애플리케이션 디버깅을 위해 했습니까? 그렇지 않다면 Grunt 기반 앱을위한 디버깅 도구를 추천 할 수 있습니까?

저는 서버 측 앱을 위해 nodejs 로 작업하고 있으며 Grunt 가 별도의 작업을 사용하도록합니다 (사용자가 작업을 개별적으로 실행할 수 있기 때문입니다).



답변

디버그에서 grunt를 실행하려면 grunt 스크립트를 노드에 명시 적으로 전달해야합니다.

node-debug $(which grunt) task

그리고 debugger;당신의 작업에 줄을 넣으십시오.node-inspector그러면 디버깅 도구가있는 브라우저가 열립니다.

2014 년 2 월 28 일 편집

node-inspector상태 node-debug에서 노드를 시작 --debug하고 node-inspector페이지에 브라우저를 열고 첫 번째 debugger줄에 도달 하거나 중단 점을 설정 하면 중지 하는 명령을 추가했습니다 .

2015 년 1 월 30 일 수정

Windows에서는 상황이 더 복잡합니다. 지침은 @ e.gluhotorenko의 답변을 참조하십시오.


답변

Windows 솔루션

운영

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는 실행 된 자바 스크립트의 첫 번째 줄에서 중단됩니다.

노드 검사기의 드롭 다운에서 작업 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
    }
  ]
}