十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹node.js中如何進(jìn)行調(diào)試,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了涪陵免費(fèi)建站歡迎大家使用!
用了幾天node.js感覺(jué)很新奇,但是調(diào)試問(wèn)題實(shí)在是愁煞人,開(kāi)始的時(shí)候懶的學(xué)習(xí)調(diào)試方法,看看異常內(nèi)容就可以了,但隨著代碼復(fù)雜程度的上升,并不是所有錯(cuò)誤都是語(yǔ)法錯(cuò)誤了,不調(diào)試搞不定了,只好搜搜資料,學(xué)習(xí)了一下怎么調(diào)試。
使用過(guò)PHP的同學(xué)肯定都清楚,修改了某個(gè)腳本文件后,只要刷新頁(yè)面服務(wù)器就會(huì)加載新的內(nèi)容,但是node.js在第一次引用到某個(gè)文件解析后會(huì)將其放入內(nèi)存,下次訪(fǎng)問(wèn)的時(shí)候直接在內(nèi)存中獲取,以提高效率,但是這對(duì)我們開(kāi)發(fā)造成一定困擾,修改了某個(gè)module后只能重啟服務(wù)器后才能生效,調(diào)試起來(lái)效率還是很低的。
于是乎node.js中有了supervisor插件幫我們堅(jiān)實(shí)文件改動(dòng),自動(dòng)重啟服務(wù)器,supervisor是node.js的一個(gè)包,安裝起來(lái)很簡(jiǎn)單,使用npm的安裝命令就可以,因?yàn)槲覀冃枰诳刂婆_(tái)運(yùn)行,所以需要安裝在全局環(huán)境中
npm install -g supervisor
這樣我們就可以使用supervisor啟動(dòng)腳本了
supervisor index
當(dāng)我們對(duì)文件做了改動(dòng)的時(shí)候,可以看到控制臺(tái)多了三行,服務(wù)器已經(jīng)重啟了
node.js本身支持調(diào)試,在語(yǔ)句前面加debugger指令就可以添加一個(gè)斷點(diǎn)
var server=require('./server'), router=require('./router'), requestHandlers=require('./requestHandlers');debugger;var handle={};debugger; handle['/']=handle['/start']=requestHandlers.start;debugger; handle['/upload']=requestHandlers.upload; handle['/show']=requestHandlers.show;debugger; server.start(8080,router.route,handle);
在啟動(dòng)服務(wù)的時(shí)候添加debug 選項(xiàng)
node debug index.js
這時(shí)候輸入一些指令就可以單步調(diào)試、到斷點(diǎn)監(jiān)視局部變量等,看個(gè)命令圖,很多命令都有其縮寫(xiě)形式
命令 | 功能 |
run | 執(zhí)行腳本,在第一行暫停 |
restart | 重新執(zhí)行腳本 |
cont, c | 繼續(xù)執(zhí)行,直到遇到下一個(gè)斷點(diǎn) |
next, n | 單步執(zhí)行 |
step, s | 單步執(zhí)行并進(jìn)入函數(shù) |
out, o | 從函數(shù)中步出 |
setBreakpoint(), sb() | 當(dāng)前行設(shè)置斷點(diǎn) |
setBreakpoint(‘f()’), sb(...) | 在函數(shù)f的第一行設(shè)置斷點(diǎn) |
setBreakpoint(‘script.js’, 20), sb(...) | 在 script.js 的第20行設(shè)置斷點(diǎn) |
clearBreakpoint, cb(...) | 清除所有斷點(diǎn) |
backtrace, bt | 顯示當(dāng)前的調(diào)用棧 |
list(5) | 顯示當(dāng)前執(zhí)行到的前后5行代碼 |
watch(expr) | 把表達(dá)式 expr 加入監(jiān)視列表 |
unwatch(expr) | 把表達(dá)式 expr 從監(jiān)視列表移除 |
watchers | 顯示監(jiān)視列表中所有的表達(dá)式和值 |
repl | 在當(dāng)前上下文打開(kāi)即時(shí)求值環(huán)境 |
kill | 終止當(dāng)前執(zhí)行的腳本 |
scripts | 顯示當(dāng)前已加載的所有腳本 |
version | 顯示v8版本 |
詳細(xì)使用有興趣同學(xué)可以自己摸索,我是沒(méi)興趣。。。太復(fù)雜了,看幾個(gè)貼心的
是的,Eclipse又威武了,連node.js也能調(diào)試,在Eclipe官網(wǎng)上下載eclipse,然后 Help->Install New Software->Add
在彈出的窗口添加一個(gè)源,名字好記就行,地址是http://chromedevtools.googlecode.com/svn/update/dev/
等一會(huì)兒后彈出選擇界面,選中第一個(gè)
一路next到最后finish,下載完成后會(huì)提醒重啟Eclipse,完成之后就可以調(diào)試node.js了,打開(kāi)想調(diào)試的文件,切換Eclipse到調(diào)試視圖,點(diǎn)擊工具欄右邊的小三角,選擇Debug Configuration
雙擊 Standard V8 VM 選項(xiàng)創(chuàng)建一個(gè)新的配置,填好相應(yīng)參數(shù)
通過(guò) --debug-brk選項(xiàng)在控制臺(tái)啟動(dòng)node服務(wù)器
node --debug-brk=5858 test.js
點(diǎn)擊Eclipse剛才界面的debug按鈕,就可以像調(diào)試Java一樣調(diào)試node.js了
大部分node.js應(yīng)用都是web應(yīng)用,所以一些基于Chrome的在線(xiàn)調(diào)試工具應(yīng)運(yùn)而生,最出名的應(yīng)該就是node-inspector了,這是一個(gè)node.js的模塊,安裝、使用相當(dāng)?shù)姆奖?,首先使用npm把其安裝在全局環(huán)境中
npm install -g node-inspector
node-inspector是通過(guò)websocket方式來(lái)轉(zhuǎn)向debug輸入輸出的。因此,我們?cè)谡{(diào)試前要先啟動(dòng)node-inspector來(lái)監(jiān)聽(tīng)node.js的debug調(diào)試端口。默認(rèn)情況下node-inspector的端口是8080,可以通過(guò)參數(shù)--web-port=[port]來(lái)設(shè)置端口。
在啟動(dòng)node-inpspector之后,我們可以通過(guò)--debug或--debug-brk來(lái)啟動(dòng)node.js程序。
這時(shí)候就可以訪(fǎng)問(wèn)http://127.0.0.1:8888/debug?port=5858 使用瀏覽器調(diào)試了,看看界面,不用多說(shuō)什么了吧
以上是node.js中如何進(jìn)行調(diào)試的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!