[javascript] 我如何調試Node.js應用程序?



14 Answers

調試

剖析

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

Flamegraphs

追踪

記錄

輸出調試信息的庫

增強堆棧跟踪信息的庫

標杆

其他

遺產

這些用於工作,但不再維護或不再適用於現代節點版本。

Question

我如何調試Node.js服務器應用程序?

現在我主要使用如下的打印語句使用警報調試

sys.puts(sys.inspect(someVariable));

必須有更好的調試方法。 我知道Google Chrome有一個命令行調試器。 這個調試器是否也可用於Node.js?




使用這個命令

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect



我創建了一個名為pry.js的整潔小工具,可以幫助你。

在你的代碼的某處放置一個簡單的語句,正常運行你的腳本,節點將停止當前的線程,讓你訪問所有的變量和函數。 查看/編輯/隨意刪除它們!

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()



IntelliJ對Node.js有著奇妙的作用。

另外,IntelliJ支持“代碼幫助”。







node-debug -p 8888 scriptFileName.js






我個人使用JetBrains WebStorm,因為它是我發現的唯一適用於前端和後端JavaScript的JavaScript IDE。

它可以在多個操作系統上運行,並具有內置的Node.js調試功能(以及其他許多功能)( http://www.jetbrains.com/webstorm/features/index.html )。

我唯一的“問題”/願望清單項目

  1. 在Mac上,它似乎比Windows更耗資源 它在版本6中不再是問題。
  2. 如果它具有代碼片段支持(如Sublime Text 2的那些支持) - 即鍵入'fun'並點擊'tab'來放入一個函數,那將會很好。 請參閱下面的@WickyNilliams評論 - 使用Live Templates,您也​​可以使用代碼片段支持。






如果你需要一個功能強大的Node.js日誌庫, Tracer是一個更好的選擇。

它可以輸出包含時間戳,文件名,方法名稱,行號,路徑或調用堆棧,支持顏色控制台以及支持數據庫,文件,流傳輸的日誌消息。 我是作者。




我寫了一個不同的方法來調試Node.js代碼,它非常穩定且非常簡單。 它位於https://github.com/s-a/iron-node

開源的跨平台可視化調試器。

安裝:

npm install iron-node -g;

調試:

iron-node yourscript.js;







Brackets是Adobe研究的一個項目,它可以讓你在他們的開源編輯器中調試你的Node.js代碼。 它具有一些有趣的功能,如實時代碼覆蓋,追溯檢查,異步調用樹。




適用於Visual Studio 2012或2013的Node.js工具包含一個調試器。 這裡概述here “用於Visual Studio的Node.js工具包括對調試節點應用程序的全面支持。”。 作為Node.js的新手,但在.NET中有一個背景,我發現這是一個調試Node.js應用程序的好方法。




自6.3版開始,Node 內置 GUI調試器(使用Chrome的DevTools)

只需通過檢查員標誌,您就可以獲得檢查員的URL:

node --inspect server.js

您也可以通過傳遞--inspect-brk來打破第一行。

要自動打開Chrome窗口,請使用inspect-process模塊。

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js



Related