Node 腳本的調試工具

2016年,Node 決定將 Chrome 瀏覽器的"開發者工具"做爲官方的調試工具,使得 Node 腳本也可使用圖形界面調試node

1.準備chrome

  建立目錄npm

D:\nodejs>mkdir test

D:\nodejs>cd test

  生成package.json文件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.調試服務腳本app

  運行時,加--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/koa

  打開調試工具的方法工具

   (1)在 http://127.0.0.1:3001 的窗口打開"開發者工具",左上角有Node 標誌

   (2)在 Chrome 瀏覽器的地址欄,鍵入 chrome://inspect 或 about:inspect

    (3)調試工具窗口

    Console(控制檯)、Source(源碼)、Memory(內存)、Profile(性能)

    (4)設置斷點

    瀏覽器訪問http://localhost:3001/baby,頁面會顯示正在等待服務器返回

    切換到調試工具,能夠看到 Node 主線程處於暫停(paused)階段

 

  進入 Console 面板,輸入 name

  正處在斷點處的上下文(context)

  Sources 面板,右側能夠看到 Watch、Call Stack、Scope、Breakpoints 等摺疊項

  Scope 中,能夠看到 Local 做用域和 Global 做用域裏面的全部變量

  在Local 做用域裏面修改變量name,並繼續運行

    頁面顯示

    (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

  點擊繼續運行,在console面板輸出Hello結束

相關文章
相關標籤/搜索