[英]How do I debug Node.js applications?
如何調試 Node.js 服務器應用程序?
現在我主要使用帶有打印語句的警報調試,如下所示:
sys.puts(sys.inspect(someVariable));
一定有更好的調試方法。 我知道谷歌瀏覽器有一個命令行調試器。 這個調試器也可用於 Node.js 嗎?
節點檢查員可以節省一天! 從任何支持WebSocket 的瀏覽器中使用它。 斷點、分析器、實時編碼等……真是太棒了。
安裝它:
npm install -g node-inspector
然后運行:
node-debug app.js
node --prof ./app.js
node --prof-process ./the-generated-log-file
輸出調試信息的庫
增強堆棧跟蹤信息的庫
ab -n 100000 -c 1 http://127.0.0.1:9778/
這些曾經可以工作,但不再維護或不再適用於現代節點版本。
作為 Google Chrome Developer Tools 的一部分發布的V8調試器可用於調試 Node.js 腳本。 可以在Node.js GitHub wiki 中找到有關其工作原理的詳細說明。
只需傳遞檢查員標志,您就會獲得檢查員的 URL:
node --inspect server.js
您也可以通過傳遞--inspect-brk
來中斷第一行。
Visual Studio Code將是我調試的選擇。 沒有安裝任何工具或npm install
東西的開銷。 只需在 package.json 中設置您的應用程序的起點,VSCode 將自動在您的解決方案中創建一個配置文件。 它建立在Electron之上,Atom 等編輯器也建立在Electron之上。
VS Code 提供了與您在 VS、Eclipse 等其他 IDE 中可能擁有的類似調試體驗。
我個人使用JetBrains WebStorm,因為它是我發現的唯一一個同時適用於前端和后端 JavaScript 的 JavaScript IDE。
它適用於多個操作系統,並且內置了 Node.js 調試(以及大量其他東西)( http://www.jetbrains.com/webstorm/features/index.html )。
我唯一的“問題”/願望清單項目是是:
這里有很多很棒的答案,但我想補充一下我的觀點(基於我的方法的演變方式)
讓我們面對現實吧,我們都喜歡一個好的console.log('Uh oh, if you reached here, you better run.')
有時這很好用,所以如果你不願離它太遠,至少添加使用Visionmedia 的 debug為您的日志添加一些亮點。
盡管控制台日志記錄很方便,但要進行專業調試,您需要卷起袖子並陷入困境。設置斷點,單步執行代碼,檢查范圍和變量以查看導致這種奇怪行為的原因。 正如其他人所提到的,節點檢查器確實是蜜蜂膝蓋。 它使用內置調試器完成您可以做的所有事情,但使用熟悉的 Chrome DevTools 界面。 如果像我一樣,您使用Webstorm ,那么這里有一個方便的調試指南。
默認情況下,我們無法在事件循環的不同周期(滴答)中跟蹤一系列操作。 要解決這個問題,請查看longjohn (但不在生產中!)。
使用 Node.js,我們可以讓服務器進程保持相當長的時間。 如果您認為它出現了一些令人討厭的泄漏,您會怎么做? 使用heapdump和 Chrome DevTools 比較一些快照,看看有什么變化。
對於一些有用的文章,請查看
如果您想觀看視頻,那么
無論你選擇什么路徑,只要確保你了解你是如何調試的
這是一件痛苦的事情
看看自己的煩惱就知道
你自己和沒有人做到了索福克勒斯,阿賈克斯
忒修斯是 Adobe 研究的一個項目,它允許您在他們的開源編輯器Brackets 中調試您的 Node.js 代碼。 它有一些有趣的特性,比如實時代碼覆蓋、追溯檢查、異步調用樹。
適用於 Visual Studio 2012 或 2013 的Node.js 工具包括一個調試器。 此處的概述指出“適用於 Visual Studio 的 Node.js 工具包括對調試節點應用程序的完整支持。”。 作為 Node.js 的新手,但有 .NET 背景,我發現這個插件是調試 Node.js 應用程序的好方法。
Visual Studio Code有非常好的 Node.js 調試支持。 它是免費、開源和跨平台的,可在 Linux、OS X 和 Windows 上運行。
您甚至可以調試grunt 和 gulp 任務,如果您需要...
我編寫了一種不同的方法來調試 Node.js 代碼,它穩定且非常簡單。 它可以在https://github.com/sa/iron-node 上找到。
一個開源的跨平台可視化調試器。
安裝:
npm install iron-node -g;
調試:
iron-node yourscript.js;
如果您使用的是Atom IDE ,則可以安裝node-debugger
包。
我創建了一個名為pry.js的簡潔小工具,可以幫助您解決問題。
在代碼中的某處放置一個簡單的語句,正常運行腳本,節點將停止當前線程,讓您可以訪問所有變量和函數。 隨意查看/編輯/刪除它們!
var pry = require('pryjs')
class FizzBuzz
run: ->
for i in [1..100]
output = ''
eval(pry.it) // magic
output += "Fizz" if i % 3 is 0
output += "Buzz" if i % 5 is 0
console.log output || i
bar: ->
10
fizz = new FizzBuzz()
fizz.run()
我為那些不確定從哪里開始使用node-inspector的人整理了一個簡短的Node.js 調試入門。
Visual Studio Code將在調試中為我們工作。
使用網絡風暴! 它非常適合調試 Node.js 應用程序。 它有一個內置的調試器。 在此處查看文檔: https : //www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
假設您的計算機上安裝了 node-inspector(如果沒有,只需鍵入“npm install -g node-inspector”),您只需要運行:
node-inspector & node --debug-brk scriptFileName.js
並將命令行中的 URI 粘貼到 WebKit(Chrome/Safari)瀏覽器中。
如果你需要一個強大的 Node.js 日志庫, Tracer https://github.com/baryon/tracer是更好的選擇。
它輸出帶有時間戳、文件名、方法名、行號、路徑或調用堆棧的日志消息,支持顏色控制台,並支持數據庫、文件、流傳輸。 我是作者。
有新的開源Nodeclipse項目(作為 Eclipse 插件或Enide Studio ):
Nodeclipse 在2013 年 Eclipse 十大新插件中排名第一。 它使用經過修改的V8調試器(來自 Google Chrome Developer Tools for Java)。
Nodeclipse 是每月月初發布的免費開源軟件。
IntelliJ非常適合 Node.js。
此外,IntelliJ 很好地支持“代碼協助”。
使用這個命令
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
ndb 是一種改進的 Node.js 調試體驗,由 Chrome DevTools 啟用
node-debug -p 8888 scriptFileName.js
使用您喜歡的瀏覽器調試器調試小型Node.js腳本的快捷方法是使用browserify 。 請注意,這種方法不適用於需要本機I / O庫的任何應用程序,但是對於大多數小型腳本而言,它已經足夠了。
$ npm install -g browserify
現在將您所有的var x = requires('x')
調用移至requires.js
文件並運行:
$ browserify requires.js -s window -o bundle.js
(這里的缺點是,你要么必須移動或發表意見requires
在您的所有文件。)
像這樣在HTML文件中包含bundle.js
:
<script type="text/javascript" src="bundle.js"></script>
現在,將文件加載到瀏覽器中,然后按F12鍵和中提琴:在瀏覽器中調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.