如何除錯nodejs程式?以下這篇文章跟大家介紹一下nodejs調試debug的方法,希望對大家有幫助!
對開發者來說,在開發應用程式的過程中,往往為了開發方便和解決bug需要藉助於程式語言的調試功能。一般來說我們需要藉助強大IDE的調試功能來完成這項工作。 nodejs也不例外。
今天我們來詳細介紹如何除錯node程式。
開啟nodejs的偵錯
還記得之前我們講到的koa程式嗎?本文將會以一個簡單的koa服務端程式為例,來展開nodejs的除錯。
先看下一個簡單的koa服務app.js:
const Koa = require('koa'); const app = module.exports = new Koa(); app.use(async function(ctx) { ctx.body = 'Hello World'; }); if (!module.parent) app.listen(3000);
上面的程式開啟了3000端口,建立了一個http服務。每次請求的時候,都會回傳hello World,非常的簡單。
要想執行上面的程序,我們需要執行node app.js。這會執行app.js但是並不會開啟調試功能。
怎麼進行偵錯呢?
我們需要加上 --inspect 參數:
node --inspect app.js
上面的程式碼將會開啟nodejs的偵錯功能。
我們看下輸出結果:
Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a For help, see: https://nodejs.org/en/docs/inspector
結果告訴了我們兩件事情,第一件事情就是debugger監聽的連接埠。預設將會開啟127.0.0.1的9229埠。並且分配了一個唯一的UUID以供區分。
第二件事就是告訴我們nodejs使用的偵錯器是Inspector。
Inspector是nodejs 8之後引進的,如果是在nodejs 7之前,那麼使用的是legacy debugger。
調試的安全性
如果debugger連接到了nodejs運行環境中,如果有惡意攻擊者的話,這個惡意攻擊者可以在nodejs環境中運行任意程式碼。這會為我們的程式帶來很大的安全隱患。
所以我們一定要注意調試的安全性。一般來說,我們不建議進行遠端偵錯。
預設情況下 --inspect 綁定的是127.0.0.1,這樣就只允許本地程式存取。並且任何本地運行的程式都有權限進行該程式的調試。
如果我們真的想將debug程式暴露給外部程式的話,那麼可以指明本機的外網IP位址或0.0.0.0(表示任何位址,無限制),這樣遠端機子就可以進行遠端調試了。
如果我們想進行安全的remote debug該怎麼處理呢?
首先,我們要開啟本地的debug:
node --inspect app.js
然後我們可以建立一個ssh隧道,將本地的9221連接埠映射到遠端伺服器的9229連接埠:
ssh -L 9221:localhost:9229 user@remote.example.com
這樣我們就可以透過連接本地的9221端口,進行遠端調試了。
使用WebStorm進行nodejs調試
JetBrains出品的WebStorm可謂是開發nodejs的利器,WebStorm自帶有debug選項,如果開啟該選項,則會在後台開啟--inspect:
使用WebStorm來進行偵錯和使用IDEA來進行java程式偵錯類似,這裡就不多介紹了。
使用Chrome devTools進行偵錯
使用Chrome devTools進行偵錯的前提是我們已經開啟了 --inspect模式。
在chrome中輸入chrome://inspect:
我們可以看到chrome inspect的介面,如果你本機已經有開啟inspect的nodejs程序的話,在Remote Target中就可以直接看到。
選取你要偵錯的target,點選inspect,即可開啟Chrome devTools偵錯工具:
你可以對程式進行profile,也可以進行偵錯。
這裡我們關注的是調試,所以到source一欄,加入你要偵錯的程式的源代碼:
使用node-inspect來進行偵錯
其實nodejs有一個自帶的偵錯工具,叫做node-inspect,這是一個cli的偵錯工具。我們來看看怎麼使用。 我們直接使用:node inspect app.js < Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb < For help, see: https://nodejs.org/en/docs/inspector < Debugger attached. Break on start in app.js:1 > 1 const Koa = require('koa'); 2 const app = module.exports = new Koa(); 3 debug>node inspect 做了兩件事情,第一件事就是產生子程式去執行node --inspect app.js,第二件事情就是在主程式中運行CLI調試視窗。
#1、Stepping
- cont, c : 繼續執行
- next, n: Step到下一步
- step, s: Step in
- out, o: Step out
- pause: 暫停運行的程式碼
2、Breakpoints
- setBreakpoint(), sb(): 在目前行設定斷點
- setBreakpoint(line), sb(line): 在指定的行設定斷點
- setBreakpoint ('fn()'), sb(…): 在指定的function中設定斷點
- setBreakpoint('script.js', 1), sb(…): 在指定的腳本檔案中設定斷點
- clearBreakpoint('script.js', 1), cb(…): 從檔案中清除斷點
3、Information
- #backtrace, bt: 印出目前execution frame的backtrace資訊
- list(5): 列出原始碼前後的5行 ##watch(expr): 新增監聽表達式
- unwatch(expr): 刪除監聽表達式
- watchers: 列出所有的watchers
- repl: 開啟repl表達式
- #exec expr : 執行表達式
其他的debug客戶端
除了上面我們講到的幾個之外,我們還可以使用vscode,Visual Studio ,Eclipse IDE 等來進行nodejs的調試,這裡就不一一詳細介紹了。 有興趣的朋友可以自行探索。 更多node相關知識,請造訪:nodejs 教學! !
以上是如何開啟nodejs調試?如何調試nodejs程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)