国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Node.js調(diào)試技術總結分享

2019-11-19 17:11:10
字體:
供稿:網(wǎng)友

前言

眾所周知調(diào)試技術與開發(fā)技術構成了軟件開發(fā)的基石。目前Nodejs作為新型的Web Server開發(fā)棧倍受開發(fā)者關注。總的來說Nodejs的應用程序主要有兩部分:JavaScript編寫的js模塊和C語言編譯的二進制模塊。

這里主要介紹三種avaScript模塊的調(diào)試方法:基于Nodejs內(nèi)建的調(diào)試器,基于V8調(diào)試插件和基于Chrome瀏覽器的調(diào)試器。

以下所有的操作都將基于如下代碼(example.js):

var http = require('http');var url = require('url');http.createServer(function (req, res) { var path = url.parse(req.url).pathname; res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(path);}).listen(1337, "127.0.0.1");console.log('Server running at http://127.0.0.1:1337/');

一. 基于Nodejs內(nèi)建的調(diào)試器

Nodejs提供了一個內(nèi)建調(diào)試器來幫助開發(fā)者調(diào)試應用程序。想要開啟調(diào)試器我們需要在代碼中加入debugger標簽,當Nodejs執(zhí)行到debugger標簽時會自動暫停(debugger標簽相當于在代碼中開啟一個斷點)。代碼如下:

var path = url.parse(req.url).pathname;debugger;res.writeHead(200, {'Content-Type': 'text/plain'});

執(zhí)行命令:node debug example.js 就可以進入調(diào)試模式。

在debug模式下,可以使用內(nèi)建命令如repl去評估變量和表達式的值(如2所示)。我們也可以通過help命令來獲取完整的調(diào)試命令列表。

Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version

二. 基于V8插件的調(diào)試器

Nodejs是基于google V8的引擎上構建的,Google為Eclipse提供了一個對應的調(diào)試插件。關于如何在Eclipse中安裝和調(diào)試Nodejs程序就不再重復描述了,網(wǎng)上已經(jīng)有很多的文章了,唯一要注意的是在默認情況下V8引擎支持的調(diào)試模式是本地模式。如果想要開啟遠程調(diào)試的話,我們需要修改Nodejs中的V8源文件: /deps/v8/src/platform-posix.cc

 addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); --> INADDR_ANY addr.sin_port = htons(port);

然后重新編譯Nodejs。

提示:

用插件來調(diào)試nodejs程序,你有時候會遇到什么connect refuse, get version failed等等錯誤。那么請注意你使用的ip的地址, 一般下127.0.0.1的回環(huán)地址是都工作的。如果你使用真實的ip地址,請檢查防火墻設置。

三. 基于Chrome瀏覽器的調(diào)試器

既然我們可以通過V8的調(diào)試插件來調(diào)試,那是否也可以借用Chrome瀏覽器的JavaScript調(diào)試器來調(diào)試呢?node-inspector模塊提供了這樣一種可能。我們需要先通過npm來安裝node-inspector

npm install -g node-inspector // -g 導入安裝路徑到環(huán)境變量

node-inspector是通過websocket方式來轉(zhuǎn)向debug輸入輸出的。因此,我們在調(diào)試前要先啟動node-inspector來監(jiān)聽Nodejs的debug調(diào)試端口。

默認情況下node-inspector的端口是8080,可以通過參數(shù)--web-port=[port]來設置端口。在啟動node-inpspector之后,我們可以通過--debug或--debug-brk來啟動nodejs程序。通過在瀏覽器輸入http://[ip address]:8080/debug?port=5858,我們會得到如下的調(diào)試窗口:

這三種方法各自有優(yōu)缺點,我個人比較欣賞node-inspector的方式。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 祁门县| 清丰县| 渝中区| 通州市| 清河县| 西乌珠穆沁旗| 武宁县| 静海县| 措美县| 沾益县| 济源市| 唐海县| 安阳市| 福安市| 福州市| 故城县| 泰和县| 郧西县| 星子县| 建昌县| 额尔古纳市| 龙里县| 承德市| 澄城县| 石城县| 丽水市| 兴城市| 鄢陵县| 隆昌县| 木兰县| 墨玉县| 疏勒县| 桓台县| 中宁县| 蒙城县| 锡林浩特市| 昆明市| 佳木斯市| 静安区| 泰宁县| 浙江省|