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