Câu hỏi Meteor: Gỡ lỗi ở phía máy chủ


Có ai biết một phương pháp tốt để gỡ lỗi mã phía máy chủ? Tôi đã thử gỡ lỗi Node.js sau đó sử dụng trình kiểm tra nút nhưng nó không hiển thị bất kỳ mã nào của tôi.

Tôi kết thúc bằng cách sử dụng console.log nhưng điều này là rất kém hiệu quả.

Cập nhật: Tôi tìm thấy thủ tục sau đây hoạt động trên máy Linux của tôi:

  1. Khi bạn chạy Meteor, nó sẽ sinh ra hai tiến trình

    process1: / usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js

    process2: / usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. Bạn cần gửi kill -s USR1 trên process2

  3. Chạy trình kiểm tra nút và bạn có thể thấy mã máy chủ của mình

Trong lần thử đầu tiên, tôi sửa đổi dòng cuối cùng trên kịch bản khởi động meteor trong / usr / lib / meteor / bin / meteor

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"

và chạy NODE_DEBUG=--debug meteor trên dấu nhắc lệnh. Điều này chỉ đặt cờ --debug trên process1 vì vậy tôi chỉ thấy các tệp sao băng trên thanh tra nút và không thể tìm thấy mã của tôi.

Ai đó có thể kiểm tra điều này trên máy tính Windows và Mac không?


76
2018-06-14 14:11


gốc


FYI, thay vì console.log, sử dụng Meteor._debug (nó kết thúc lên gọi console.log, nhưng có một lưu ý nói rằng nó sẽ được cải thiện một số ngày.) - Josh
Xem câu trả lời của tôi, trên MAC nó đang làm việc, tôi đã có thể xem và gỡ lỗi các tệp js của tôi. - Nachiket
Tôi đã thử điều này trên máy Mac của tôi, nhưng không đi. - Gezim
@ Harmal000 bạn liên kết với câu hỏi này - ý của bạn là liên kết với một câu hỏi khác? - Kevin
Bài viết này thực sự hữu ích về gỡ lỗi trong meteor.js joshowens.me/easily-debugging-meteor-js - Julien Leray


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


Trong Meteor 0.5.4, điều này đã trở nên dễ dàng hơn nhiều:

Đầu tiên chạy các lệnh sau từ terminal:

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

Và sau đó mở http://localhost:8080 trong trình duyệt của bạn để xem bảng điều khiển của trình kiểm tra nút.

Cập nhật

Vì Meteor 1.0 bạn có thể chỉ cần gõ

meteor debug

mà về cơ bản là một phím tắt cho các lệnh trên, và sau đó khởi động thanh tra nút trong trình duyệt của bạn như đã đề cập.

Cập nhật

Trong Meteor 1.0.2, một giao diện điều khiển hoặc trình bao đã được thêm vào. Nó có thể có ích cho các biến đầu ra và chạy các lệnh trên máy chủ:

meteor shell

85
2018-02-22 10:20



Cảm ơn bạn đã đăng câu trả lời! Hãy chắc chắn để đọc Câu hỏi thường gặp về Tự quảng cáo cẩn thận. Cũng lưu ý rằng nó là cần thiết bạn đăng tuyên bố từ chối trách nhiệm mỗi lần bạn liên kết đến trang web / sản phẩm của riêng mình. - Andrew Barber
Cảm ơn, tôi không biết! - Sander van den Akker
Làm cách nào để tắt trình gỡ lỗi này? Mỗi khi tôi chạy meteor trình gỡ lỗi này chạy và khóa ứng dụng sao băng của tôi chạy bất kỳ ứng dụng nào của phía máy khách. - fuzzybabybunny
có thể in các giá trị không? làm sao? - juanpastas
meteor debug đã làm các trick trên Meteor 1.1.0.2. Cảm ơn. - AlikElzin-kilaka


Ứng dụng Meteor là ứng dụng Node.js. Khi chạy một ứng dụng Meteor với meteor [run] lệnh, bạn có thể định cấu hình NODE_OPTIONS biến môi trường để bắt đầu node trong chế độ gỡ lỗi.

Ví dụ về NODE_OPTIONS giá trị biến môi trường:

  • --debug
  • --debug=47977 - chỉ định một cổng
  • --debug-brk - phá vỡ tuyên bố đầu tiên
  • --debug-brk=5858 - chỉ định một cổng và phá vỡ câu lệnh đầu tiên

nếu bạn export NODE_OPTIONS=--debug, tất cả các meteor lệnh chạy từ cùng một shell sẽ kế thừa biến môi trường. Ngoài ra, bạn có thể bật gỡ lỗi chỉ cho một lần chạy, với NODE_OPTIONS="--debug=47977" meteor.

Để gỡ lỗi, hãy chạy node-inspector trong một vỏ khác, sau đó đi đến http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>, bất kể cái gì node-inspector bảo bạn chạy.


15
2018-02-14 11:07





Để bắt đầu node.js trong chế độ gỡ lỗi, tôi đã thực hiện theo cách này:

  1. mở /usr/lib/meteor/app/meteor/run.js
  2. trước

    nodeOptions.push(path.join(options.bundlePath, 'main.js')); 
    

    thêm vào

    nodeOptions.push('--debug');
    

Dưới đây là các bước bổ sung thực tế để bạn đính kèm nhật thực gỡ lỗi:

  1. sử dụng '--debug-brk' thay vì '--debug' ở đây, vì tôi dễ dàng đính kèm node.js hơn bằng cách sử dụng nhật thực làm trình gỡ lỗi.
  2. thêm 'trình gỡ lỗi'; trong mã mà bạn muốn gỡ lỗi. (Tôi thích cách này theo cách riêng)
  3. chạy sao băng trong bảng điều khiển
  4. đính kèm vào node.js trong nhật thực (công cụ V8, đính kèm vào localhost: 5858)
  5. chạy, chờ trình gỡ lỗi được nhấn

khi bạn bắt đầu sao băng trong thư mục ứng dụng thiên thạch của mình, bạn sẽ thấy rằng "trình gỡ lỗi nghe trên cổng 5858"trong bảng điều khiển.


9
2017-07-29 13:15



nếu bạn đang sử dụng mrt, tất nhiên đường dẫn đến run.js là khác nhau. - Jameson Quinn
... như trong ~ / .meteorite / meteor / meteor / meteor / 0a148c69d6af9832006a6f6d27cc112ed90cb3e4 / app / meteor / - Jameson Quinn
Các tệp của tôi được sao chép trong /usr/lib và /usr/local/ bởi những lý do không rõ. Nếu nó không hoạt động với bạn, hãy thử chỉnh sửa /usr/local/meteor/app/meteor/run.js thay vì /usr/lib/meteor/app/meteor/run.js - zVictor
Cảm ơn, giải pháp của bạn là cách dễ nhất mà tôi từng tìm thấy. Nó không đòi hỏi quá trình giết chóc, không đặt các biến trên dòng lệnh. - zVictor


Trên Meteor 1.0.3.1 (cập nhật câu trả lời của Sergey.Simonchik)

Bắt đầu máy chủ của bạn với meteor run --debug-port=<port-number>

Trình duyệt điểm đến http://localhost:6222/debug?port=<port-number>

Ở đâu <port-number> là một cổng bạn chỉ định.

Trong mã của bạn, hãy thêm debugger; nơi bạn muốn đặt điểm ngắt.

Tùy thuộc vào nơi debugger; được gọi, nó sẽ phá vỡ trên cửa sổ trình duyệt máy khách hoặc máy chủ của bạn với thanh tra được mở.


9
2018-02-18 00:56





Tôi thích thiết lập các điểm ngắt thông qua GUI. Bằng cách này, tôi không phải nhớ xóa bất kỳ mã gỡ lỗi nào khỏi ứng dụng của mình.

Đây là cách tôi quản lý để làm điều đó phía máy chủ cho ứng dụng sao băng địa phương của tôi:

meteor debug

bắt đầu ứng dụng của bạn theo cách này.

Mở Chrome đến địa chỉ mà nó cung cấp cho bạn. Bạn CÓ THỂ cần phải cài đặt https://github.com/node-inspector/node-inspector (nó có thể đi kèm với Meteor bây giờ không?)

Bạn sẽ thấy một số mã sao băng nội bộ lạ (không phải mã ứng dụng bạn đã viết). Nhấn phát để chạy mã. Mã này đơn giản khởi động máy chủ của bạn để nghe các kết nối.

Chỉ sau khi bạn nhấn play, bạn sẽ thấy một thư mục mới trong cấu trúc thư mục trình gỡ rối của bạn được gọi "ứng dụng". Trong đó có các tệp dự án thiên thạch của bạn. Đặt điểm ngắt trong đó một dòng bạn muốn.

Mở địa chỉ cục bộ của ứng dụng của bạn. Điều này sẽ chạy mã phía máy chủ của bạn và bạn bạn sẽ có thể đạt điểm ngắt của bạn!

Lưu ý: bạn phải mở lại thanh tra và thực hiện lại quy trình này mỗi khi ứng dụng của bạn khởi động lại!


7
2017-11-02 16:11





Theo Meteor 1.0.2 có lẽ cách tốt nhất để gỡ lỗi phía máy chủ là trực tiếp thông qua trình shell tích hợp mới: với chạy máy chủ đang chạy meteor shell. Thông tin thêm tại đây: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell


6
2018-01-29 05:19





Tôi không chắc tại sao nó không hoạt động cho bạn.
Tôi có thể sử dụng nó bằng cách làm theo các bước trên bàn điều khiển (Mac).

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

Các bước trên được đề cập đến https://github.com/dannycoates/node-inspector. Nó là để gắn nút kiểm tra để chạy quá trình nút.


5
2018-06-14 18:21



Yeah, điều này cũng không hiệu quả với tôi. - Gezim
Tôi đã thử nghiệm trên Mac chỉ, bạn đang sử dụng máy Mac? - Nachiket
Vâng, tôi có máy Mac. Làm cách nào để bạn thêm điểm ngắt trong mã? Các bước chính xác bạn sử dụng cho toàn bộ điều là gì? - Gezim
sau các bước trên (câu trả lời này), tôi bắt đầu thanh tra. $ node-inspector & đã mở 127.0.0.1:8080/debug?port=5858 trong chrome. Tôi đã có thể xem các tệp của mình trong tab nguồn trong trình kiểm tra webkit - Nachiket
Tôi đã thử điều này, thêm cả hai debugger và breakpoints trong thanh tra, nhưng không ai trong số họ làm việc. Bất kỳ ý tưởng tại sao? - Jakub Arnold