Node.js 서버 애플리케이션을 어떻게 디버깅합니까?
지금은 주로 다음과 같은 인쇄 문으로 경고 디버깅을 사용하고 있습니다.
sys.puts(sys.inspect(someVariable));
더 나은 디버깅 방법이 있어야 합니다. Google 크롬 에 명령줄 디버거가 있다는 것을 알고 있습니다. 이 디버거를 Node.js에서도 사용할 수 있습니까?
질문자 :Fabian Jakobs
Node.js 서버 애플리케이션을 어떻게 디버깅합니까?
지금은 주로 다음과 같은 인쇄 문으로 경고 디버깅을 사용하고 있습니다.
sys.puts(sys.inspect(someVariable));
더 나은 디버깅 방법이 있어야 합니다. Google 크롬 에 명령줄 디버거가 있다는 것을 알고 있습니다. 이 디버거를 Node.js에서도 사용할 수 있습니까?
node-inspector 는 하루를 절약할 수 있습니다! WebSocket을 지원하는 모든 브라우저에서 사용하십시오. 중단점, 프로파일러, 라이브코딩 등... 정말 대단합니다.
다음을 사용하여 설치하십시오.
npm install -g node-inspector
그런 다음 다음을 실행합니다.
node-debug app.js
node --prof ./app.js
node --prof-process ./the-generated-log-file
디버깅 정보를 출력하는 라이브러리
스택 추적 정보를 향상시키는 라이브러리
작동하는 데 사용되지만 더 이상 유지 관리되지 않거나 최신 노드 버전에 더 이상 적용되지 않습니다.
Google Chrome 개발자 도구 의 일부로 출시된 V8 디버거를 사용하여 Node.js 스크립트를 디버그할 수 있습니다. 작동 방식에 대한 자세한 설명은 Node.js GitHub wiki 에서 찾을 수 있습니다.
인스펙터 플래그를 전달하기만 하면 인스펙터에 대한 URL이 제공됩니다.
node --inspect server.js
대신 --inspect-brk
를 전달하여 첫 번째 줄에서 중단할 수도 있습니다.
Node.js 버전 0.3.4 이상에는 디버깅 지원이 내장되어 있습니다.
node debug script.js
Visual Studio Code 는 디버깅을 위한 선택입니다. npm install
을 설치하는 오버헤드가 없습니다. package.json에서 앱의 시작점을 설정하기만 하면 VSCode가 솔루션 내부에 구성 파일을 자동으로 생성합니다. 그것은 Atom과 같은 편집기가 구축된 Electron 을 기반으로 합니다.
VS Code는 VS, Eclipse 등과 같은 다른 IDE에서와 유사한 디버깅 경험을 제공합니다.
저는 개인적으로 JetBrains WebStorm 이 프론트엔드와 백엔드 자바스크립트 모두에 좋은 유일한 자바스크립트 IDE이기 때문에 사용합니다.
그것은 여러 OS의 작동 및] 기타 물건의 톤뿐만 아니라 (Node.js를 내장 디버깅이 ( http://www.jetbrains.com/webstorm/features/index.html ).
내 유일한 '이슈'/위시리스트 항목 ~이다 있었다 :
여기에 많은 훌륭한 답변이 있지만 내 견해를 추가하고 싶습니다(내 접근 방식이 어떻게 발전했는지에 따라)
직시합시다. 우리 모두는 좋은 console.log('Uh oh, if you reached here, you better run.')
사랑하고 때로는 잘 작동하므로 너무 멀리 이동하는 것을 주저한다면 최소한 다음을 추가하십시오. Visionmedia의 디버그 를 사용하여 로그에 일부 블링을 적용합니다.
콘솔 로깅이 편리한 만큼 전문적으로 디버그하려면 소매를 걷어붙이고 끼어들어야 합니다. 중단점을 설정하고, 코드를 단계별로 실행하고, 범위와 변수를 검사하여 이상한 동작을 일으키는 원인을 확인하세요. 다른 사람들이 언급했듯이 node-inspector는 실제로 bees-knee입니다. 내장 디버거로 할 수 있는 모든 작업을 수행하지만 친숙한 Chrome DevTools 인터페이스를 사용합니다. 저처럼 Webstorm 을 사용한다면 여기 에서 디버깅에 대한 편리한 가이드가 있습니다.
기본적으로 이벤트 루프(틱)의 서로 다른 주기에서 일련의 작업을 추적할 수 없습니다. 이 문제를 해결하려면 longjohn을 살펴보십시오(프로덕션에서는 아님).
Node.js를 사용하면 상당한 시간 동안 서버 프로세스를 유지할 수 있습니다. 그것이 일부 불쾌한 누출을 일으켰다고 생각한다면 어떻게 하시겠습니까? heapdump 와 Chrome DevTools를 사용하여 일부 스냅샷을 비교하고 변경 사항을 확인하세요.
유용한 기사를 보려면 다음을 확인하십시오.
동영상을 보고 싶다면
어떤 경로를 선택하든 디버깅 방법을 이해하고 있는지 확인하십시오.
고통스러운 일이다
자신의 고민을 보고 알기 위해
당신 자신과 그 누구도 해내지 못했다는 것소포클레스, 아약스
테세우스 는 오픈 소스 편집기 Brackets 에서 Node.js 코드를 디버그할 수 있는 Adobe 연구 프로젝트입니다. 실시간 코드 적용, 소급 검사, 비동기 호출 트리와 같은 몇 가지 흥미로운 기능이 있습니다.
Visual Studio 2012 또는 2013용 Node.js 도구 에는 디버거가 포함되어 있습니다. 여기 의 개요는 "Visual Studio용 Node.js 도구에는 노드 앱 디버깅에 대한 완전한 지원이 포함되어 있습니다."라고 나와 있습니다. Node.js를 처음 사용하지만 .NET에 대한 배경 지식이 있기 때문에 이 추가 기능이 Node.js 애플리케이션을 디버그하는 좋은 방법이라는 것을 알았습니다.
Visual Studio Code 에는 정말 멋진 Node.js 디버깅 지원이 있습니다. 무료, 오픈 소스 및 크로스 플랫폼이며 Linux, OS X 및 Windows에서 실행됩니다.
필요한 경우 grunt 및 gulp 작업을 디버그할 수도 있습니다.
안정적이고 매우 간단한 Node.js 코드를 디버그하는 다른 접근 방식을 작성했습니다. https://github.com/sa/iron-node 에서 사용할 수 있습니다.
오픈 소스 크로스 플랫폼 비주얼 디버거.
설치:
npm install iron-node -g;
디버그:
iron-node yourscript.js;
Atom IDE를 사용하는 경우 node-debugger
패키지를 설치할 수 있습니다.
Chrome 버전 67.0.3396.62(+) 사용
노드 --inspect-brk=0.0.0.0:9229 server.js(서버 js 파일 이름)
노드 앱 디버깅을 위해 특별히 팝업되는 또 다른 DevTools 창이 있습니다.
나는 당신을 도울 수 있는 pry.js 라는 깔끔한 작은 도구를 만들었습니다.
코드의 어딘가에 간단한 명령문을 넣고 스크립트를 정상적으로 실행하면 노드가 현재 스레드를 중지하여 모든 변수와 함수에 액세스할 수 있도록 합니다. 마음대로 조회/수정/삭제!
var pry = require('pryjs') class FizzBuzz run: -> for i in [1..100] output = '' eval(pry.it) // magic output += "Fizz" if i % 3 is 0 output += "Buzz" if i % 5 is 0 console.log output || i bar: -> 10 fizz = new FizzBuzz() fizz.run()
Node.js에는 내장 명령줄 디버거 클라이언트가 있습니다. Cloud 9 IDE에는 매우 멋진 (시각적) 디버거도 있습니다.
어디서부터 시작해야 할지 잘 모르는 사람들을 위해 node-inspector 사용에 대한 짧은 Node.js 디버깅 입문서를 작성했습니다.
Visual Studio Code 는 디버깅에 도움이 될 것입니다.
웹스톰을 사용하세요! Node.js 애플리케이션 디버깅에 적합합니다. 내장 디버거가 있습니다. 여기에서 문서를 확인하십시오: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
Node.js를 위한 강력한 로깅 라이브러리가 필요한 경우 Tracer https://github.com/baryon/tracer 가 더 나은 선택입니다.
타임스탬프, 파일 이름, 메소드 이름, 라인 번호, 경로 또는 호출 스택, 지원 색상 콘솔, 지원 데이터베이스, 파일, 스트림 전송이 포함된 로그 메시지를 출력합니다. 나는 저자입니다.
컴퓨터에 node-inspector가 설치되어 있다고 가정하고(그렇지 않은 경우 'npm install -g node-inspector' 입력) 다음을 실행하기만 하면 됩니다.
node-inspector & node --debug-brk scriptFileName.js
그리고 명령줄의 URI를 WebKit(Chrome/Safari) 브라우저에 붙여넣습니다.
완전성을 위해:
--inspect 플래그로 노드 프로세스를 시작합니다.
node --inspect index.js
chrome://inspect
를 엽니다. "노드용 전용 DevTools 열기" 링크를 클릭하거나 크롬 DevTools를 쉽게 열 수 있도록 이 크롬 확장 프로그램을 설치하십시오.
자세한 정보는 이 링크를 참조하십시오
새로운 오픈 소스 Nodeclipse 프로젝트(Eclipse 플러그인 또는 Enide Studio )가 있습니다.
Nodeclipse는 2013년 Eclipse Top 10 NEW Plugins 에서 1위가 되었습니다. 수정된 V8 디버거(Java용 Google Chrome 개발자 도구)를 사용합니다.
Nodeclipse는 매달 초에 출시되는 무료 오픈 소스 소프트웨어입니다.
IntelliJ 는 Node.js에서 훌륭하게 작동합니다.
또한 IntelliJ는 '코드 지원'을 잘 지원합니다.
많은 가능성이 있습니다 ...
디버그 지원은 종종 v8 디버깅 프로토콜 또는 최신 Chrome 디버깅 프로토콜을 사용하여 구현됩니다.
NetBeans IDE는 버전 8.1 부터 Node.js를 지원합니다.
<...>
새로운 기능 하이라이트
Node.js 애플리케이션 개발
- 새 Node.js 프로젝트 마법사
- 새 Node.js Express 마법사
- 향상된 자바스크립트 편집기
- Node.js 애플리케이션 실행을 위한 새로운 지원
- Node.js 애플리케이션 디버깅을 위한 새로운 지원.
<...>
추가 참조:
이 명령을 사용하십시오
DEBUG_LEVEL=all node file.js DEBUG=* node file.js node file.js --inspect
ndb는 Chrome DevTools에서 활성화된 Node.js용 개선된 디버깅 환경입니다.
node-debug -p 8888 scriptFileName.js
출처 : http:www.stackoverflow.com/questions/1911015/how-do-i-debug-node-js-applications
PHP의 startsWith() 및 endsWith() 함수 (0) | 2022.01.22 |
---|---|
macOS 또는 OS X에 pip를 어떻게 설치합니까? (0) | 2022.01.22 |
SQL SELECT에서 IF...THEN을 어떻게 수행합니까? (0) | 2022.01.22 |
java.lang.UnsupportedClassVersionError 수정 방법: 지원되지 않는 major.minor 버전 (0) | 2022.01.22 |
왜 항상 `--set-upstream`을 수행해야 합니까? (0) | 2022.01.22 |