亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Node 調試工具入門教程

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

JavaScript 程序越來越復雜,調試工具的重要性日益凸顯。客戶端腳本有瀏覽器,Node 腳本怎么調試呢?

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

本文介紹如何使用 Node 腳本的調試工具。

一、示例程序

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

$ mkdir debug-demo
$ cd debug-demo

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

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

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

// 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 應用,指定了兩個路由,訪問后會顯示一行歡迎信息。如果想詳細了解代碼的詳細含義,可以參考Koa 教程。

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

現在,運行上面的腳本。

$ node --inspect app.js

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

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

在 Target 部分,點擊 inspect 鏈接,就能進入調試工具了。

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

三、調試工具窗口

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

它主要有四個面板。

  1. Console:控制臺
  2. Memory:內存
  3. Profiler:性能
  4. Sources:源碼

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

四、設置斷點

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

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

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

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

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

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

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

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

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

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

五、調試非服務腳本

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

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

上面代碼中, --inspect=9229 指定調試端口為 9229,這是調試工具默認的通信端口。 -e 參數指定一個字符串,作為代碼運行。

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

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

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

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

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

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

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

$ 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 與調試工具的連接,然后就可以打開調試工具了。

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

$ kill -SIGUSR1 30464

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Node.js連接Sql Server 2008及數據層封裝詳解

    Node.js連接Sql Server 2008及數據層封裝詳解

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

    nodejs dgram模塊廣播+組播的實現示例

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

    nodejs調用cmd命令實現復制目錄

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

    node實現基于token的身份驗證

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

    nodejs實現超簡單生成二維碼的方法

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

    Webpack 實現 Node.js 代碼熱替換

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

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

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

    NodeJS和瀏覽器中this關鍵字的不同之處

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

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

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

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

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

最新評論