목차
이 기사의 예
V8 Inspector Protocol + Chrome DevTools
如何进入 Chrome 的调试界面
Vscode 调试
Launch Configuration
Chrome 디버깅 인터페이스에 들어가는 방법
실행 구성
노드 프로세스 작업에 연결
웹 프론트엔드 JS 튜토리얼 Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

Nov 30, 2021 pm 07:01 PM
node.js 디버그 코드

Node 코드를 디버깅하는 방법은 무엇입니까? 다음 기사에서는 Node.js를 디버깅하는 두 가지 일반적인 방법을 소개합니다. 여기에는 특정 참조 가치가 있으며 도움이 되기를 바랍니다.

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

많은 경우 Node.js 디버깅에 대해 걱정하고, console.log라는 침입적인 방법만 사용하지만, 사실 Node.js도 브라우저 디버깅만큼 편리할 수 있습니다.

이 기사의 환경:

mac
Chrome 94.0.4606.81
node v12.12.0
vscode Version: 1.61.1
로그인 후 복사

이 기사의 예

이 기사의 예는 이전에 탐색한 양파 모델을 사용합니다. index.js,如下:

const Koa = require('koa');

const app = new Koa();
console.log('test')

// 中间件1
app.use((ctx, next) => {
  console.log(1);
  next();
  console.log(2);
});

// 中间件 2 
app.use((ctx, next) => {
  console.log(3);
  next();
  console.log(4);
});

app.listen(9000, () => {
    console.log(`Server is starting`);
});
로그인 후 복사

V8 Inspector Protocol + Chrome DevTools

v8 Inspector Protocol 是 nodejs v6.3 新加入的调试协议,通过 websocket与 Client/IDE 交互,同时基于 Chrome/Chromium 浏览器的 devtools 提供了图形化的调试界面。

我们进入项目根目录,执行(留意这个 8888 端口,后面会用到):

node --inspect=8888 index.js
로그인 후 복사

结果如下:

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

结果出来一个链接——ws://127.0.0.1:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d。这个链接是 Node.js 和 Chrome 之前通信的 websocket 地址,通过 websocket 通信,我们可以在 Chrome 中实时看到 Node.js 的结果。

如何进入 Chrome 的调试界面

第一种方式(自己尝试无效)

打开 http://localhost:8888/json/list,其中 8888 是上面 --inspect 的参数。

[
    {
        "description": "node.js instance",
        "devtoolsFrontendUrl": "chrome-devtools://devtools/bundled/js_app.html?experiments=true&v8only=true&ws=localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "devtoolsFrontendUrlCompat": "chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "faviconUrl": "https://nodejs.org/static/images/favicons/favicon.ico",
        "id": "5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d",
        "title": "index.js",
        "type": "node",
        "url": "file:///Users/gpingfeng/Documents/Personal/Test/test-onion/index.js",
        "webSocketDebuggerUrl": "ws://localhost:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d"
    }
]
로그인 후 복사

很多资料说,可以通过 devtoolsFrontendUrl 就可以直接访问到,但尝试了一下,并没有成功。【可能跟我的环境有关】

第二种方式

查了一下资料,在 stackoverflow 找到对应的方案,如下:

devtools://devtools/bundled/inspector.html?experiments=true&ws=127.0.0.1:8888/5f5c59fc-d42b-4ab0-be15-6feb1a05ed2d
로그인 후 복사

其中 devtools://devtools/bundled/inspector.html?experiments=true 是固定的,ws 参数对应的就是 websocket 地址。

可以看到界面如下:

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

第三种方式

Chrome 浏览器打开 HTTP 监听接口页面,打开 dev tool,执行完 node --inspect=8888 index.js 后可以看到这个图标,点击一下:

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

就可以出现跟浏览器一样的调试页面,比如 Sources Panel查看脚本、Profile Panel 监测性能等。

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

另外,可以访问访问 chrome://inspect/#devices,可以看到当前浏览器监听的所有 inspect。

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

Vscode 调试

除了浏览器之外,各大主流的 IDE 都支持 Node.js 的调试,本文以 Vscode 为例。

Launch Configuration

打开调试页面,给我们 Node 项目添加一个 launch 配置:

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

选择 Node.js

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

这样就会在项目根目录生成对应的文件 .vscode/launch.json(当然你也可以手动创建),其中 program 指的就是文件入口,${workspaceFolder}

{
  // 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": "pwa-node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${workspaceFolder}/index.js"
    }
  ]
}
로그인 후 복사

V8 Inspector Protocol + Chrome DevTools

v8 Inspector 프로토콜은 nodejs v6.3에 새로 추가된 디버깅 프로토콜로 클라이언트와 상호 작용합니다. /IDE는 websocket을 통해 이루어지며 Chrome/Chromium 브라우저를 기반으로 하며 devtools는 그래픽 디버깅 인터페이스를 제공합니다.

프로젝트 루트 디렉터리에 들어가서 실행합니다(나중에 사용되는 8888 포트에 유의하세요): Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.rrreee

결과는 다음과 같습니다:

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.결과는 링크입니다——ws://127.0 .0.1:8888/5f5c59fc -d42b-4ab0-be15-6feb1a05ed2d. 이 링크는 이전에 Node.js와 Chrome이 통신할 때 사용했던 Websocket 주소입니다. Websocket 통신을 통해 Chrome에서 Node.js의 결과를 실시간으로 볼 수 있습니다.

Chrome 디버깅 인터페이스에 들어가는 방법

첫 번째 방법(직접 시도하면 작동하지 않음)

🎜 http 열기: // localhost:8888/json/list, 여기서 8888는 위의 --inspect 매개변수입니다. 🎜rrreee🎜devtoolsFrontendUrl을 통해 직접 접근할 수 있다는 정보가 많은데, 시도해 보았는데 작동하지 않았습니다. [저의 환경과 관련 있을 수 있습니다]🎜🎜두 번째 방법🎜🎜정보를 확인하고 stackoverflow🎜 해당 솔루션 찾기 , 다음과 같습니다. 🎜rrreee🎜여기서 devtools://devtools/bundled/inspector.html?experiments=true는 고정되어 있으며 ws 매개변수는 웹소켓 주소에 해당합니다. 🎜🎜다음과 같이 인터페이스를 볼 수 있습니다: 🎜🎜2 .png🎜🎜세 번째 방법🎜🎜Chrome 브라우저에서 HTTP 수신 인터페이스 페이지를 열고 개발자 도구를 열고 node --inspect=8888 index를 실행합니다. js 다음을 클릭하면 이 아이콘을 볼 수 있습니다: 🎜🎜Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.🎜🎜스크립트를 볼 수 있는 소스 패널, 성능을 모니터링할 수 있는 프로필 패널 등 브라우저와 동일한 디버깅 페이지가 나타납니다. 🎜🎜Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.🎜🎜또한 , chrome://inspect/#devices를 방문하면 현재 브라우저에서 모니터링하는 모든 검사를 볼 수 있습니다. 🎜🎜Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.🎜

Vscode 디버깅🎜🎜브라우저 외에도 모든 주요 IDE는 Node.js 디버깅을 지원합니다. 이 문서에서는 Vscode를 예로 들어 보겠습니다. 🎜

실행 구성

🎜디버깅 페이지를 열고 노드 프로젝트에 실행 구성을 추가하세요. 🎜🎜Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.🎜🎜Node.js를 선택하세요🎜🎜Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.🎜🎜이렇게 하면 프로젝트 루트 디렉터리에 해당 파일 가 생성됩니다. . vscode/launch.json (물론 수동으로 생성할 수도 있음) 여기서 program은 파일 항목을 나타내고 ${workspaceFolder}는 루트 디렉토리. 🎜rrreee🎜F5를 누르거나 다음 버튼을 클릭하세요: 🎜🎜🎜🎜🎜결과: 🎜🎜🎜🎜🎜왼쪽에 현재 범위의 값, 호출 스택 및 기타 정보가 표시될 수 있으며 함수 또한 오른쪽 상단에서 단계별로 디버깅할 수 있으며, 다시 시작 및 기타 기능이 매우 강력합니다. 🎜

노드 프로세스 작업에 연결

노드 프로세스 작업에 연결을 사용하면 실행 중인 Node.js 프로세스를 직접 디버깅할 수 있습니다.

예를 들어 프로젝트를 먼저 시작하겠습니다——npm run start. npm run start

然后 command + shift + p(window Ctrl+Shift+p),输入 Attach to Node Process Action

그런 다음 command + Shift + p(창 Ctrl+Shift+p), Attach to Node Process Action를 입력하고 Enter를 누른 다음 선택합니다. 프로세스가 실행 중이고 Enter 키를 누르면 위에서 구성한 대로 코드를 디버깅할 수 있습니다.

Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

1Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.

요약

이 문서에는 Node.js를 디버깅하는 두 가지 일반적인 방법이 요약되어 있습니다. 첫 번째 Node.js는 websocket을 통해 Chrome 브라우저에 정보를 전송하고 Chrome에서 직접 디버깅합니다. 두 번째는 Vscode 시작 구성 및 사용자 정의 구성을 통해 디버깅하는 것입니다. 노드 프로세스 작업에 연결을 통해 구성 없이 실행 중인 Node.js 코드를 편리하게 디버깅할 수 있습니다.

노드 관련 지식을 더 보려면 nodejs 튜토리얼

을 방문하세요! ! 🎜

위 내용은 Node.js 코드를 디버깅하는 두 가지 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? 최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? Dec 13, 2022 pm 08:00 PM

Node용 Docker 이미지를 선택하는 것은 사소한 문제처럼 보일 수 있지만 이미지의 크기와 잠재적인 취약점은 CI/CD 프로세스와 보안에 상당한 영향을 미칠 수 있습니다. 그렇다면 최고의 Node.js Docker 이미지를 어떻게 선택합니까?

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Nov 16, 2022 pm 08:34 PM

Node 19가 정식 출시되었습니다. 이 글에서는 Node.js 19의 6가지 주요 기능에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Nov 29, 2022 pm 08:44 PM

Node.js는 GC(가비지 수집)를 어떻게 수행하나요? 다음 기사에서는 이에 대해 설명합니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? 노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? Feb 08, 2023 am 10:09 AM

노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 ​​찾습니다. 4. "확인"을 클릭합니다.

See all articles