最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Node調(diào)試工具使用步驟詳解

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 19:49:42
文檔

Node調(diào)試工具使用步驟詳解

Node調(diào)試工具使用步驟詳解:這次給大家?guī)鞱ode調(diào)試工具使用步驟詳解,Node調(diào)試工具使用的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。2016年,Node 決定將 Chrome 瀏覽器的"開發(fā)者工具"作為官方的調(diào)試工具,使得 Node 腳本也可以使用圖形界面調(diào)試,這大大方便了開發(fā)者
推薦度:
導(dǎo)讀Node調(diào)試工具使用步驟詳解:這次給大家?guī)鞱ode調(diào)試工具使用步驟詳解,Node調(diào)試工具使用的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。2016年,Node 決定將 Chrome 瀏覽器的"開發(fā)者工具"作為官方的調(diào)試工具,使得 Node 腳本也可以使用圖形界面調(diào)試,這大大方便了開發(fā)者
這次給大家?guī)鞱ode調(diào)試工具使用步驟詳解,Node調(diào)試工具使用的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。

2016年,Node 決定將 Chrome 瀏覽器的"開發(fā)者工具"作為官方的調(diào)試工具,使得 Node 腳本也可以使用圖形界面調(diào)試,這大大方便了開發(fā)者。

本文介紹如何使用 Node 腳本的調(diào)試工具。

一、示例程序

為了方便講解,下面是一個示例腳本。首先,新建一個工作目錄,并進(jìn)入該目錄。

$ mkdir debug-demo
$ cd debug-demo

然后,生成 package.json 文件,并安裝Koa 框架和 koa-route 模塊。

$ npm init -y
$ npm install --save koa koa-route

接著,新建一個腳本 app.js ,并寫入下面的內(nèi)容。

// app.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');

上面代碼是一個簡單的 Web 應(yīng)用,指定了兩個路由,訪問后會顯示一行歡迎信息。如果想詳細(xì)了解代碼的詳細(xì)含義,可以參考Koa 教程。

二、啟動開發(fā)者工具

現(xiàn)在,運(yùn)行上面的腳本。

$ node --inspect app.js

上面代碼中, --inspect 參數(shù)是啟動調(diào)試模式必需的。這時,打開瀏覽器訪問 http://127.0.0.1//3000,就可以看到 Hello World 了。

接下來,就要開始調(diào)試了。一共有兩種打開調(diào)試工具的方法,第一種是在 Chrome 瀏覽器的地址欄,鍵入 chrome://inspect 或者 about:inspect ,回車后就可以看到下面的界面。

在 Target 部分,點(diǎn)擊 inspect 鏈接,就能進(jìn)入調(diào)試工具了。

第二種進(jìn)入調(diào)試工具的方法,是在 http://127.0.0.1//3000 的窗口打開"開發(fā)者工具",頂部左上角有一個 Node 的綠色標(biāo)志,點(diǎn)擊就可以進(jìn)入。

三、調(diào)試工具窗口

調(diào)試工具其實就是"開發(fā)者工具"的定制版,省去了那些對服務(wù)器腳本沒用的部分。

它主要有四個面板。

  1. Console:控制臺

  2. Memory:內(nèi)存

  3. Profiler:性能

  4. Sources:源碼

這些面板的用法,基本上跟瀏覽器環(huán)境差不多,這里只介紹 Sources (源碼)面板。

四、設(shè)置斷點(diǎn)

進(jìn)入 Sources 面板,找到正在運(yùn)行的腳本 app.js 。

在第11行(也就是下面這一行)的行號上點(diǎn)一下,就設(shè)置了一個斷點(diǎn)。

ctx.response.body = 'Hello ' + name;

這時,瀏覽器訪問 http://127.0.0.1:3000/alice ,頁面會顯示正在等待服務(wù)器返回。切換到調(diào)試工具,可以看到 Node 主線程處于暫停(paused)階段。

進(jìn)入 Console 面板,輸入 name,會返回 alice。這表明我們正處在斷點(diǎn)處的上下文(context)。

再切回 Sources 面板,右側(cè)可以看到 Watch、Call Stack、Scope、Breakpoints 等折疊項。打開 Scope 折疊項,可以看到 Local 作用域和 Global 作用域里面的所有變量。

Local 作用域里面,變量 name 的值是 alice ,雙擊進(jìn)入編輯狀態(tài),把它改成 bob 。

然后,點(diǎn)擊頂部工具欄的繼續(xù)運(yùn)行按鈕。

頁面上就可以看到 Hello bob 了。

命令行下,按下 ctrl + c,終止運(yùn)行 app.js 。

五、調(diào)試非服務(wù)腳本

Web 服務(wù)腳本會一直在后臺運(yùn)行,但是大部分腳本只是處理某個任務(wù),運(yùn)行完就會終止。這時,你可能根本沒有時間打開調(diào)試工具。等你打開了,腳本早就結(jié)束運(yùn)行了。這時怎么調(diào)試呢?

$ node --inspect=9229 -e "setTimeout(function() { console.log('yes'); }, 30000)"

上面代碼中, --inspect=9229 指定調(diào)試端口為 9229,這是調(diào)試工具默認(rèn)的通信端口。 -e 參數(shù)指定一個字符串,作為代碼運(yùn)行。

訪問 chrome://inspect ,就可以進(jìn)入調(diào)試工具,調(diào)試這段代碼了。

代碼放在 setTimeout 里面,總是不太方便。那些運(yùn)行時間較短的腳本,可能根本來不及打開調(diào)試工具。這時就要使用下面的方法。

$ node --inspect-brk=9229 app.js

上面代碼中, --inspect-brk 指定在第一行就設(shè)置斷點(diǎn)。也就是說,一開始運(yùn)行,就是暫停的狀態(tài)。

六、忘了寫 --inspect 怎么辦?

打開調(diào)試工具的前提是,啟動 Node 腳本時就加上 --inspect 參數(shù)。如果忘了這個參數(shù),還能不能調(diào)試呢?

回答是可以的。首先,正常啟動腳本。

$ node app.js

然后,在另一個命令行窗口,查找上面腳本的進(jìn)程號。

$ ps ax | grep app.js 
30464 pts/11 Sl+ 0:00 node app.js
30541 pts/12 S+ 0:00 grep app.js

上面命令中, app.js 的進(jìn)程號是 30464 。

接著,運(yùn)行下面的命令。

$ node -e 'process._debugProcess(30464)'

上面命令會建立進(jìn)程 30464 與調(diào)試工具的連接,然后就可以打開調(diào)試工具了。

還有一種方法,就是向腳本進(jìn)程發(fā)送 SIGUSR1 信號,也可以建立調(diào)試連接。

$ kill -SIGUSR1 30464

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!

推薦閱讀:

vue項目中怎樣關(guān)閉eslint代碼校驗

JS用事件委托給元素增加事件

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

文檔

Node調(diào)試工具使用步驟詳解

Node調(diào)試工具使用步驟詳解:這次給大家?guī)鞱ode調(diào)試工具使用步驟詳解,Node調(diào)試工具使用的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。2016年,Node 決定將 Chrome 瀏覽器的"開發(fā)者工具"作為官方的調(diào)試工具,使得 Node 腳本也可以使用圖形界面調(diào)試,這大大方便了開發(fā)者
推薦度:
標(biāo)簽: 步驟 方法 使用
  • 熱門焦點(diǎn)
專題
Top

抖音扫码关注

手机端二维码

每天分享百科知识!