Câu hỏi Làm cách nào để gỡ lỗi các ứng dụng Node.js?


Làm cách nào để gỡ lỗi ứng dụng máy chủ Node.js?

Hiện tại tôi đang sử dụng gỡ lỗi cảnh báo với các câu lệnh in như thế này:

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

Phải có cách tốt hơn để gỡ lỗi. tôi biết điều đó Google Chrome có trình gỡ rối dòng lệnh. Trình gỡ lỗi này có sẵn cho Node.js không?


1396
2017-12-15 22:50


gốc


Bạn có thể dùng Locus để tiêm dòng lệnh. - Ali Davut
Nếu bạn muốn gỡ lỗi với appoach IDE truyền thống, hãy sử dụng vscode sử dụng vscode youtube.com/watch?v=egBJ0cd0GLM - jw56578
Tôi đã tìm thấy bài viết này rất thú vị và nó hoạt động tốt cho tôi: Gỡ lỗi Node.js bằng Chrome DevTools. Hy vọng nó giúp :) - Timbergus
"cảnh báo gỡ lỗi" :) - The Red Pea


Các câu trả lời:


-bộ kiểm tra nút có thể tiết kiệm trong ngày! Sử dụng nó từ bất kỳ trình duyệt hỗ trợ WebSocket. Breakpoints, profiler, livecoding, vv ... Nó thực sự tuyệt vời.

Cài đặt nó với:

npm install -g node-inspector

Sau đó chạy:

node-debug app.js

1193
2017-10-15 17:17



Wish-inspector đã hoạt động. Các thành phần hồ sơ cần phải có được một số tình yêu. - Jonathan Dumaine
Thật không may cho tôi, nút kiểm tra không làm việc với các phiên bản mới nhất của Node.js và nó đã không hỗ trợ đăng nhập vào giao diện điều khiển trình duyệt kể từ v0.1. node-codein chỉ là lỗi. Vì vậy, tôi đã viết mô-đun của riêng tôi để giúp gỡ lỗi bằng cách cho phép bạn kết xuất các đối tượng và như vậy ra khỏi giao diện điều khiển trình duyệt web của bạn. Tôi nghĩ rằng nó có thể được sử dụng cho người khác: nút-khỉ. Ngoài ra, nó hoạt động trong cả Firefox VÀ Chrome. - Justin Warkentin
Vì đây là một công cụ tuyệt vời và nổi tiếng như vậy, chắc chắn rằng tác giả gốc đã thừa nhận họ không còn tài nguyên để duy trì nó nữa, sẽ không có vấn đề gì vì cộng đồng nguồn mở có thể nhặt nó lên? - PeterT
Bây giờ thanh tra hiện đang được duy trì tích cực bởi StrongLoop và đang hoạt động trở lại với phiên bản mới nhất (0.3) yay! Thông báo ở đây: blog.strongloop.com/… - balupton
"Kể từ phiên bản 6.3, Node.js cung cấp trình gỡ lỗi dựa trên DevTools dựa trên buit mà hầu hết không dùng nữa Thanh tra Node, xem ví dụ: bài đăng trên blog này để bắt đầu. Trình gỡ lỗi tích hợp được phát triển trực tiếp bởi nhóm V8 / Chromium và cung cấp một số tính năng nâng cao nhất định (ví dụ: dấu vết ngăn xếp dài / async) quá khó thực hiện trong Thanh tra Nút. " - nói repo thanh tra nút - ThisClark


Gỡ lỗi

Hồ sơ

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

Heapdumps

Flamegraphs

Truy tìm

Ghi nhật ký

Thư viện xuất thông tin gỡ lỗi

Thư viện giúp tăng cường thông tin theo dõi stack

Đo điểm chuẩn

Khác

Di sản

Việc sử dụng này hoạt động nhưng không còn được duy trì hoặc không còn áp dụng được cho các phiên bản nút hiện đại.


672
2018-05-12 21:37



Về Nodetime: đối với những người không muốn gửi dữ liệu của họ đến máy chủ có thời gian có một "thay thế" cục bộ (nó vẫn dựa trên nodetime), look mô-đun, như được chỉ ra trong stackoverflow.com/questions/12864221/nodejs-memory-profiling - reallynice
biểu đồ falme đã có trong các công cụ dành cho nhà phát triển Chrome. - Farid Nouri Neshat
Tôi không tìm thấy các báo cáo cpu từ nodetime rất hữu ích: 1. Tôi chỉ nhận được một cây phương pháp, không có thời gian 'tự'. 2. Có vẻ như cành cây được cắt bên dưới một số lượng nhất định của precentage. Những 2 làm cho nó rất khó khăn để undestand nơi cpu dành phần lớn thời gian của mình. - shacharz
npm install -g profiler phàn nàn về việc thiếu python trên windows 7. Tôi đã cố gắng đặt python = C: \ Python34 \, nhưng điều này cho một sự cố. - Stepan Yakovenko
Các profiler duy nhất làm việc ra khỏi hộp là nodetime. Tuy nhiên, stacktrace hồ sơ cpu của nó là không sử dụng được (nó không cung cấp đủ chi tiết). Các công cụ Nodejs 4 msvc 2012 cũng có profiler, nhưng nó cũng đã báo cáo lỗi không hợp lệ quan trọng ... - Stepan Yakovenko


Các V8 trình gỡ lỗi được phát hành như một phần của Google Công cụ dành cho nhà phát triển Chrome có thể được sử dụng để gỡ lỗi các kịch bản lệnh Node.js. Một giải thích chi tiết về cách thức hoạt động này có thể được tìm thấy trong Wiki GitHub của Node.js.

Cũng có ndb, một trình gỡ lỗi dòng lệnh được viết bằng chính Node.js.


208
2018-03-29 08:57



Tôi quan tâm, sau khi trình bày tại Google IO rằng Paul Irish và Pavel đã làm là bây giờ có thể gỡ lỗi node.js thẳng đến Công cụ phát triển Chrome mà không cần nhật thực? - balupton
+1 Làm việc rất tốt cho tôi. Sử dụng phiên bản Eclipse 3.x, x64 mới trên Mac OS X. Hướng dẫn cài đặt cũng được viết tốt. Cảm ơn bạn. - amateur barista
Cũng đến trong Nodeclipse nodeclipse.org (với một số lỗi liên quan đến Node.js đã được sửa) - Paul Verest
Mục nhập của tôi vào đấu trường này là trepanjs (npmjs.com/package/trepanjs). Nó có tất cả sự tốt đẹp của trình gỡ rối nút, nhưng phù hợp hơn với gdb. Nó cũng có nhiều tính năng và lệnh như làm nổi bật cú pháp, trợ giúp trực tuyến phong phú hơn và đánh giá thông minh hơn. Xem github.com/rocky/trepanjs/wiki/Cool-things cho một số tính năng thú vị của nó. - rocky
Tính năng hiện có sẵn trong các phiên bản hàng đêm. Kiểm tra ở đây để được hướng dẫn: https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt - zeronone


Node có của riêng nó được xây dựng trong Trình gỡ rối GUI như phiên bản 6.3 (sử dụng DevTools của Chrome)

Nodes builtin GUI debugger

Chỉ cần vượt qua cờ kiểm tra và bạn sẽ được cung cấp một URL cho thanh tra viên:

node --inspect server.js

Bạn cũng có thể phá vỡ dòng đầu tiên bằng cách vượt qua --inspect-brk thay thế.

Để tự động mở cửa sổ Chrome, hãy sử dụng kiểm tra quá trình mô-đun.

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

# start the debugger with inspect
inspect script.js

151
2017-09-14 14:51



Không phải để giảm giá các bước trên, nhưng chỉ để chia sẻ ... Tôi đã cố gắng để tạo ra một wrapper đó là hơi mạnh mẽ hơn, cũng như dễ dàng hơn để cài đặt. Xem: github.com/jaridmargolin/inspect-process - Jarid R. Margolin
@ JaridR.Margolin Đẹp. Tôi đã cập nhật câu trả lời để sử dụng câu trả lời đó thay thế. Dễ dàng hơn nhiều để thiết lập và hoạt động tốt hơn :) - gregers
Câu trả lời này hiện đang ở dưới cùng và đó là câu trả lời duy nhất đã thực sự làm việc cho tôi. Điều này thật tuyệt vời! - LOAS
Trong trường hợp nó giúp bất cứ ai, tôi đã đưa ra một đoạn video giải thích quá trình này tại youtu.be/rtZKUnks6jI. - RoccoB
Bạn đã lấy chủ đề tối cho công cụ dành cho nhà phát triển Chrome ở đâu? - Pieter Meiresone


Phiên bản Node.js 0.3.4+ có hỗ trợ gỡ lỗi tích hợp sẵn.

node debug script.js

Hướng dẫn sử dụng: http://nodejs.org/api/debugger.html


83
2018-01-16 01:20



Bạn có bất kỳ liên kết nào đến tài liệu hướng dẫn về cách sử dụng nó không? - Fabian Jakobs
Tôi không có bất kỳ tài liệu nào. vừa cập nhật lên v0.3.5. đặt một dòng "trình gỡ rối;" trong mã của bạn sẽ hoạt động như điểm ngắt. Nó hoạt động như ndb / gdb. sau khi bạn làm "nút debug script.js" loại trợ giúp. u sẽ thấy lệnh nó hỗ trợ. p = print, l = list ... vì vậy bạn không cần phải gõ toàn bộ thế giới - JulianW
Xem screencast tại vimeo.com/19465332 - mjhm
Lưu ý, bên dưới cửa sổ là "node.exe --debug myscript.js" nhưng nó vẫn không hoạt động. - Marc
Bạn có thể phải thay đổi --debug đến debug không có dấu gạch ngang. Đó là cách cuối cùng tôi đã làm nó. Thật là khó hiểu --debug và debug làm hai việc khác nhau. - benekastah


Cá nhân tôi sử dụng JetBrains WebStorm vì đó là IDE JavaScript duy nhất mà tôi đã tìm thấy, điều này rất tốt cho cả giao diện người dùng và JavaScript phụ trợ.

Nó hoạt động trên nhiều hệ điều hành và có Node.js được xây dựng sẵn (cũng như một tấn các thứ khác] (http://www.jetbrains.com/webstorm/features/index.html).

Các mục 'vấn đề' / mục yêu thích duy nhất của tôi   :

  1. Dường như có nhiều tài nguyên bị đói trên Mac hơn Windows Nó không còn có vẻ là một vấn đề trong phiên bản 6.
  2. Sẽ tốt hơn nếu nó có hỗ trợ Snippet (giống như của Văn bản tuyệt vời 2 - tức là nhập 'vui' và nhấn 'tab' để đặt vào một hàm. Xem nhận xét của @WickyNilliams bên dưới - Với Mẫu trực tiếp, bạn cũng có hỗ trợ đoạn trích.

52
2018-05-03 14:42



webstorm không có đoạn mã hỗ trợ BTW ;-) mặc dù chúng được gọi là "Mẫu trực tiếp" thay vì đoạn trích. - WickyNilliams
Nếu bạn chỉ muốn gỡ lỗi ứng dụng node.js và đã có giấy phép Intellij IDEA, bạn chỉ có thể cài đặt plugin node.js mà không phải mua giấy phép WebStorm. Thiết lập cấu hình chạy / gỡ lỗi rất dễ dàng khi plugin được cài đặt. - Josh Liptzin


Mã Visual Studio sẽ là lựa chọn của tôi để gỡ lỗi. Không cần cài đặt bất kỳ công cụ nào hoặc npm install đồ đạc. Chỉ cần thiết lập điểm bắt đầu của ứng dụng của bạn trong package.json và VSCode sẽ tự động tạo một tệp cấu hình bên trong giải pháp của bạn. Nó được xây dựng trên Điện tử, trên đó các trình soạn thảo như Atom được tạo.

Mã VS cung cấp trải nghiệm gỡ lỗi tương tự như bạn có thể có   đã có trong các IDE khác như VS, Eclipse, v.v.

enter image description here enter image description here


52
2018-02-19 10:21



Nó mát mẻ nhưng nó có độ trễ. Đó là lý do tại sao tôi thích Sublime hơn bao giờ hết. - calbertts
nhưng tuyệt vời không có trình gỡ lỗi và tôi nghĩ mã VS cũng khá nhanh - Syed Faizan
Tôi đã có giấy phép tuyệt vời kể từ 5 năm trước. Kể từ một vài tháng trước, tôi thậm chí không cài đặt Sublime Text, chỉ cần vscode. Ra khỏi hộp có rất nhiều công cụ mà tôi nhớ trong Sublime (như thiết bị đầu cuối tích hợp ..). - elboletaire
luôn hỏi tôi về thư mục cấu hình, nó không hoạt động - carkod


Theseus là một dự án của nghiên cứu Adobe cho phép bạn gỡ lỗi mã Node.js trong trình soạn thảo Nguồn mở của họ Chân đế. Nó có một số tính năng thú vị như bảo hiểm mã thời gian thực, kiểm tra hồi tố, cây gọi không đồng bộ.

screenshot


36
2018-05-14 22:21



điều này là khá mát mẻ, vẫn không biết những gì Backtrace cho tho - misaxi
Tôi hiện đang yêu Theseus, nhưng tôi vẫn có một số vấn đề mà tôi cần phải đặt điểm ngắt và theo dõi. Tôi hiện đang phải giết ứng dụng của tôi, bắt đầu nút bằng --debug, theo dõi trhough và sau đó bắt đầu ứng dụng bằng nút-theseus. Có thể sử dụng Theseus với điểm ngắt không? Tôi đã thử tìm kiếm trên trang GitHub, StackOverflow và các diễn đàn, nhưng không có may mắn cho đến nay. Tui bỏ lỡ điều gì vậy? - Eugene