2012-07-11 28 views
27

Tôi biết cách gỡ lỗi các ứng dụng http bằng cách sử dụng nút kiểm tra và iisnode. Nhưng tôi có thể sử dụng trình kiểm tra nút để gỡ lỗi ứng dụng nút không không http, trên các cửa sổ không?Cách gỡ lỗi một ứng dụng node.js cơ bản (không phải http) trên các cửa sổ

tôi đã cố gắng:

node debug test.js 

Nó nói:

debugger listening on port 5858 

Nhưng mở http://localhost:5858/ trong Chrome không làm gì cả.


BTW: chạy node debug test.js sẽ khởi động trình gỡ rối dòng lệnh hoạt động. Nhưng nó không giống như kiểm tra nút.

+0

Bạn có thể thử http://www.jetbrains.com/webstorm/ trình gỡ lỗi khá mạnh mẽ – saintedlama

Trả lời

62

Để sử dụng nút-thanh tra, công tắc bên phải là node --debug không node debug

Dưới đây là các bước chi tiết:

  1. cài đặt nút-thanh tra toàn cầu (npm install -g node-inspector)
  2. từ một cửa sổ dòng lệnh, hãy chạy: node-inspector
  3. mở Chrome và truy cập http://localhost:8080/debug?port=5858. Bạn sẽ nhận được giao diện người dùng kiểm tra nút nhưng không có bất kỳ ứng dụng đang chạy nào.
  4. từ một cửa sổ dòng lệnh, hãy chạy ứng dụng của bạn với --debug tắc như thế này: node --debug test.js
  5. refresh tab Chrome và thì đấy!

Một vài điểm thú vị:

  • Nếu bạn giết ứng dụng của bạn và bắt đầu nó một lần nữa, chỉ cần refresh tab nút-thanh tra. Nó sẽ giữ tất cả các điểm ngắt của bạn.
  • Để phá vỡ tự động trên dòng đầu tiên bắt đầu ứng dụng của bạn với node --debug-brk test.js
+0

Với nodeJS mới nhất trên OSX, có vẻ như "gỡ lỗi nút" thực hiện điều đúng và "nút --debug" thì không. –

+0

Theo https://nodejs.org/api/debugger.html sự khác biệt của một trong hai phiên bản là về những gì nút dự kiến ​​sẽ làm: '--debug' sẽ bắt đầu _some ứng dụng được debugged_ và' debug' sẽ bắt đầu nút _to gỡ lỗi một số ứng dụng_. Đây là hai mặt của cùng một câu chuyện. – cepharum

2

Nó nói: debugger lắng nghe trên cổng 5858

Tôi tự hỏi bản thân mình về vấn đề này nhưng kể từ khi tài liệu Node.js chỉ ra rằng debugger có thể truy cập thông qua một giao thức TCP đơn giản và không nói gì về HTTP mà tôi đoán là không, nó sẽ không có sẵn tại _http: // localhost: 5858.

"V8 đi kèm với một debugger rộng có thể truy cập out-of-quá trình thông qua một giao thức TCP đơn giản" - http://nodejs.org/api/debugger.html

+0

Điểm tốt về TCP vs HTTP. Tôi biết về trình gỡ rối dòng lệnh nhưng nó thực sự là trải nghiệm kiểm tra nút mà tôi đang tìm kiếm. – Sylvain

0

FYI, trong OSX 10.8, Chrome v26 dường như không làm việc, nhưng Safari 6 không sử dụng các hướng dẫn tương tự như trên và sử dụng 0.0 .0.0: 8080 để conect.

Có một bài Danny Coates ở đâu đó nói rằng để làm điều đó theo thứ tự sau:

  1. quá trình nút của bạn: nút --debug (hoặc --debug-brk) my_program.js
  2. Node-Thanh tra: nút-Thanh tra
  3. Trình duyệt chỉ vào 0.0.0.0:8080
0

Nếu bạn là noob như tôi trên Windows và bạn nhận được 'nút thanh tra không được công nhận' hoặc một cái gì đó về lỗi cửa sổ JScript ... bất chấp cài đặt toàn cầu, thêm vào PATH, v.v ... thì điều này có thể hữu ích.

Navigate to C: \ Users \ urusername \ AppData \ Roaming \ NPM

Sau đó chạy node-debug.cmd hoặc nút-inspector.cmd

Bạn sẽ nhận được những lời huyền diệu như

Node Inspector v0.12.7 
Visit http://127.0.0.1:8080/?port=5858 to start debugging. 
Debugger listening on port 5858 

Tuyệt vời. Nếu bạn biết giải pháp tốt hơn, vui lòng cho tôi biết

Các vấn đề liên quan