欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Node 調(diào)試工具入門教程

 更新時間:2018年03月20日 09:29:50   作者:阮一峰  
這篇文章主要介紹了淺談Node 調(diào)試工具入門教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

JavaScript 程序越來越復(fù)雜,調(diào)試工具的重要性日益凸顯??蛻舳四_本有瀏覽器,Node 腳本怎么調(diào)試呢?

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

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

一、示例程序

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

$ 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)在,運行上面的腳本。

$ 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 部分,點擊 inspect 鏈接,就能進入調(diào)試工具了。

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

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

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

它主要有四個面板。

  1. Console:控制臺
  2. Memory:內(nèi)存
  3. Profiler:性能
  4. Sources:源碼

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

四、設(shè)置斷點

進入 Sources 面板,找到正在運行的腳本 app.js 。

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

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

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

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

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

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

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

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

命令行下,按下 ctrl + c,終止運行 app.js 。

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

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

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

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

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

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

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

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

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

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

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

$ node app.js

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

$ 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 的進程號是 30464

接著,運行下面的命令。

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

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

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

$ kill -SIGUSR1 30464

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js連接Sql Server 2008及數(shù)據(jù)層封裝詳解

    Node.js連接Sql Server 2008及數(shù)據(jù)層封裝詳解

    這篇文章主要介紹了Node.js連接Sql Server 2008及數(shù)據(jù)層封裝,結(jié)合實例形式較為詳細(xì)的分析了nodejs連接SQL Server2008數(shù)據(jù)庫以及針對數(shù)據(jù)庫操作方法的封裝與使用相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • nodejs dgram模塊廣播+組播的實現(xiàn)示例

    nodejs dgram模塊廣播+組播的實現(xiàn)示例

    這篇文章主要介紹了nodejs dgram模塊廣播+組播的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • nodejs調(diào)用cmd命令實現(xiàn)復(fù)制目錄

    nodejs調(diào)用cmd命令實現(xiàn)復(fù)制目錄

    本文給大家介紹的是如何在nodejs中調(diào)用CMD命令,從而實現(xiàn)目錄的復(fù)制,非常的實用,有需要的小伙伴可以參考下。
    2015-05-05
  • node實現(xiàn)基于token的身份驗證

    node實現(xiàn)基于token的身份驗證

    這篇文章主要介紹了node實現(xiàn)基于token的身份驗證,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • nodejs實現(xiàn)超簡單生成二維碼的方法

    nodejs實現(xiàn)超簡單生成二維碼的方法

    這篇文章主要介紹了nodejs實現(xiàn)超簡單生成二維碼的方法,結(jié)合實例形式分析了nodejs基于qr-image插件生成二維碼的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Webpack 實現(xiàn) Node.js 代碼熱替換

    Webpack 實現(xiàn) Node.js 代碼熱替換

    Webpack有一個很實用的功能叫做熱替換(Hot-replace),尤其是結(jié)合React Hot Loader插件,開發(fā)過程中都不需要刷新瀏覽器,任何前端代碼的更改都會實時的在瀏覽器中表現(xiàn)出來。
    2015-10-10
  • KOA+egg.js集成kafka消息隊列的示例

    KOA+egg.js集成kafka消息隊列的示例

    這篇文章主要介紹了KOA+egg.js集成kafka消息隊列的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    這篇文章主要給大家介紹了關(guān)于NodeJS和瀏覽器中this關(guān)鍵字不同的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 使用基于Node.js的構(gòu)建工具Grunt來發(fā)布ASP.NET MVC項目

    使用基于Node.js的構(gòu)建工具Grunt來發(fā)布ASP.NET MVC項目

    這篇文章主要介紹了使用基于Node.js的構(gòu)建工具Grunt來發(fā)布ASP.NET MVC項目的教程,自動化構(gòu)建工具Grunt具有編譯壓縮單元測試等功能,十分強大,需要的朋友可以參考下
    2016-02-02
  • vscode執(zhí)行npm時的一些錯誤以及處理辦法

    vscode執(zhí)行npm時的一些錯誤以及處理辦法

    在前端開發(fā)過程中,npm的使用是少不了的,所以需要知道基本的操作使用,并且了解常見的異常情況處理,下面這篇文章主要給大家介紹了關(guān)于vscode執(zhí)行npm時的一些錯誤以及處理辦法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07

最新評論