2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使得 Node 脚本也可以使用图形界面调试

1.准备

  创建目录

D:\nodejs>mkdir test

D:\nodejs>cd test

  生成package.json文件

D:\nodejs\test>npm init -y
Wrote to D:\nodejs\test\package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

  安装 Koa 框架和 koa-route 模块

D:\nodejs\test>npm install --save koa koa-route
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN test@1.0.0 No description
npm WARN test@1.0.0 No repository field.

+ koa-route@3.2.0
+ koa@2.7.0
added 45 packages from 23 contributors and audited 60 packages in 4.74s
found 0 vulnerabilities

  新建脚本test.js

const Koa = require('koa');
const router = require('koa-route');

const app = new Koa();

const main = ctx => {
  ctx.response.body = 'Hello World';
};

const welcome = (ctx, name) => {
  ctx.response.body = 'Hello ' + name;
};

app.use(router.get('/', main));
app.use(router.get('/:name', welcome));

app.listen(3000);
console.log('listening on port 3000');

2.调试服务脚本

  运行时,加--inspect启动调试模式

D:\nodejs\test>node --inspect test.js
Debugger listening on ws://127.0.0.1:9229/2d21dab8-02a4-4fde-99b3-2bdfecc6bac4
For help, see: https://nodejs.org/en/docs/inspector
listening on port 3001

  浏览器打开http://127.0.0.1:3001/

Node 脚本的调试工具

  打开调试工具的方法

   (1)在 http://127.0.0.1:3001 的窗口打开"开发者工具",左上角有Node 标志

Node 脚本的调试工具

   (2)在 Chrome 浏览器的地址栏,键入 chrome://inspect 或 about:inspect

Node 脚本的调试工具

    (3)调试工具窗口

    Console(控制台)、Source(源码)、Memory(内存)、Profile(性能)

Node 脚本的调试工具

    (4)设置断点

Node 脚本的调试工具

    浏览器访问http://localhost:3001/baby,页面会显示正在等待服务器返回

    切换到调试工具,可以看到 Node 主线程处于暂停(paused)阶段

 Node 脚本的调试工具

  进入 Console 面板,输入 name

Node 脚本的调试工具

  正处在断点处的上下文(context)

  Sources 面板,右侧可以看到 Watch、Call Stack、Scope、Breakpoints 等折叠项

  Scope 中,可以看到 Local 作用域和 Global 作用域里面的所有变量

  在Local 作用域里面修改变量name,并继续运行

Node 脚本的调试工具

    页面显示

Node 脚本的调试工具

    (5)终止调试

      命令下,ctrl+c

3.调试非服务脚本

Web 服务脚本会一直在后台运行,但是非服务脚本,运行完就结束了,来不及打开调试工具,如:

function say(word) {
  console.log(word);
}

function execute(someFunction, value) {
  someFunction(value);
}

execute(say, "Hello");

   进入调试

node --inspect-brk=9229 test.js

  --inspect-brk指定在第一行就设置断点

  chrome://inspect

Node 脚本的调试工具

Node 脚本的调试工具

  点击继续运行,在console面板输出Hello结束

Node 脚本的调试工具

 

相关文章: