Метеор: Налагодження на стороні сервера


78

Хтось знає хороший метод налагодження коду на стороні сервера? Я спробував увімкнути налагодження Node.js, а потім використовувати node-inspector, але він не відображає жодного мого коду.

У підсумку я використовую console.log, але це дуже неефективно.

Оновлення: Я виявив, що на моїй машині Linux працює така процедура:

  1. Коли ви запускаєте Meteor, він породжує два процеси

    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. Вам потрібно надіслати kill -s USR1 на process2

  3. Запустіть node-inspector, і ви побачите код сервера

З першої спроби я змінюю останній рядок сценарію запуску метеорита в / usr / lib / meteor / bin / meteor на

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

і запустіть NODE_DEBUG=--debug meteorу командному рядку. Це лише поставило прапор --debug на process1, тому я бачу лише метеорні файли на node-inspector і не міг знайти свій код.

Хтось може перевірити це на машинах Windows і Mac?


6
FYI, замість console.log, використовуйте Meteor._debug (в кінцевому підсумку виклик console.log, але є примітка про те, що він колись буде вдосконалений.)
Джош

Подивіться мою відповідь, на MAC він працює, я зміг переглянути та налагодити свої js-файли.
Начікет,

1
Я спробував це на своєму Mac, але не ходив.
Gezim

1
@ Harmal000 Ви посилалися на це запитання - чи мали намір зробити посилання на інше?
Кевін

Ця стаття дійсно корисна щодо налагодження у meteor.js joshowens.me/easily-debugging-meteor-js
Julien Leray

Відповіді:


88

У Meteor 0.5.4 це стало набагато простіше:

Спочатку запустіть наступні команди з терміналу:

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

А потім відкрийте http://localhost:8080у своєму браузері, щоб переглянути консоль інспектора вузлів.

Оновлення

З Meteor 1.0 ви можете просто вводити текст

meteor debug

що є по суті ярликом для вищевказаних команд, а потім запустіть інспектор вузлів у вашому браузері, як уже згадувалося.

Оновлення

У Meteor 1.0.2 була додана консоль або оболонка. Це може стати в нагоді для виведення змінних та запуску команд на сервері:

meteor shell

1
Дякуємо за розміщення Вашої відповіді! Будь ласка, уважно прочитайте поширені запитання щодо самореклами . Також зверніть увагу, що потрібно публікувати відмову від відповідальності кожного разу, коли ви переходите на свій сайт / продукт.
Ендрю Барбер

1
Як вимкнути цей налагоджувач? Щоразу, коли я запускаю meteorцей налагоджувач запускається і блокує мій метеорний додаток від запуску будь-чого на стороні клієнта.
fuzzybabybunny

консоль виводить завжди [object Object], наприклад:console.log('asd') [object Object]
сайти

1
чи можна надрукувати значення? як?
сайти

Чи є якась офіційна документація щодо meteor debug. Я не можу знайти свій код, щоб встановити точку зупинки.
Tony Brix

16

Метеорні програми - це програми Node.js. При запуску програми Meteor за допомогоюmeteor [run] команди ви можете налаштувати NODE_OPTIONSзмінну середовища для запуску nodeв режимі налагодження .

Приклади NODE_OPTIONS значень змінних середовища:

  • --debug
  • --debug=47977 - вказати порт
  • --debug-brk - перерва на першому твердженні
  • --debug-brk=5858 - вкажіть порт і перерву для першого оператора

Якщо ви export NODE_OPTIONS=--debug, всеmeteor команди, запущені з однієї оболонки, успадкують змінну середовища. Крім того, ви можете ввімкнути налагодження лише для одного запуску, за допомогоюNODE_OPTIONS="--debug=47977" meteor .

Для налагодження запустіть node-inspectorв іншій оболонці, а потім перейдіть до http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>, незалежно від того, що node-inspectorпідказує вам запустити.


10

Щоб запустити node.js у режимі налагодження, я зробив це таким чином:

  1. відкрити /usr/lib/meteor/app/meteor/run.js
  2. раніше

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

    додати

    nodeOptions.push('--debug');
    

Ось додаткові практичні кроки для того, щоб приєднати затемнення налагоджувача:

  1. тут використовуйте '--debug-brk' замість '--debug', тому що мені простіше приєднати node.js, використовуючи eclipse як налагоджувач.
  2. додати 'налагоджувач;' у коді, де ви хочете налагодити (я віддаю перевагу цьому особисто)
  3. запустити метеор в консолі
  4. приєднати до node.js в eclipse (інструменти V8, приєднати до localhost: 5858)
  5. запустити, дочекатися налагодження відладчика

коли ви запускаєте метеор у своїй папці метеорних програм, ви побачите, що " налагоджувач прослуховує порт 5858 " у консолі.


якщо ви використовуєте mrt, звичайно шлях до run.js інший.
Jameson Quinn,

... як у ~ / .meteorite / meteors / meteor / meteor / 0a148c69d6af9832006a6f6d27cc112ed90cb3e4 / app / meteor /
Jameson Quinn

Мої файли дублюються /usr/libі /usr/local/з невідомих причин. Якщо вам це не вдається, спробуйте редагувати /usr/local/meteor/app/meteor/run.jsзамість/usr/lib/meteor/app/meteor/run.js
zVictor

Дякую, ваше рішення - найпростіше, що я коли-небудь знаходив. Це не вимагає ні процесу вбивства, ні встановлення змінних над командним рядком.
zVictor

10

На Meteor 1.0.3.1 (оновлення до відповіді Сергія Симончика)

Запустіть свій сервер з meteor run --debug-port=<port-number>

Наведіть браузер на http://localhost:6222/debug?port=<port-number>

Де <port-number>вказаний вами порт.

У своєму коді додайте debugger; де ви хочете встановити точку зупинки.

Залежно від того, де debugger;викликається, воно або зламається у вікні браузера вашого клієнта або сервера із відкритим інспектором.


7

Я люблю встановлювати точки зупинки через графічний інтерфейс. Таким чином, я не повинен пам’ятати, щоб видалити будь-який код налагодження зі свого додатка.

Ось як мені вдалося зробити це на стороні сервера для мого локального метеорного додатка:

meteor debug

запустіть програму таким чином.

Відкрийте Chrome за вказаною адресою. Вам МОЖЕ потрібно встановити https://github.com/node-inspector/node-inspector (він може поставлятися в комплекті з Meteor зараз? Не впевнений)

Ви побачите якийсь дивний внутрішній метеорний код (не код програми, який ви написали). Натисніть кнопку відтворення щоб запустити код. Цей код просто запускає ваш сервер для прослуховування з'єднань.

Тільки після натискання кнопки відтворення ви побачите новий каталог у структурі папок налагоджувача під назвою "app" . Там є ваші файли метеорного проекту. Встановіть точку зупинки там, де є рядок, який ви хочете.

Відкрийте локальну адресу вашого додатка . Це запустить код вашої сторони сервера, і ви зможете досягти своєї точки зупинки!

Примітка: вам доведеться знову відкрити інспектор і повторювати цей процес щоразу, коли ваш додаток перезавантажується!



5

Я не впевнений, чому це не працювало для вас.
Я можу використовувати його, виконавши кроки на консолі (Mac).

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

Вищі кроки згадуються на https://github.com/dannycoates/node-inspector . Він призначений для приєднання node-inspector до запущеного процесу вузла.


Я тестував лише на Mac, чи використовуєте ви Mac?
Nachiket

Так, у мене Mac. Як додати точку зупинки в коді? Які саме кроки ви використовуєте для всього?
Гезим

після вищевказаних кроків (цієї відповіді) я запускаю інспектора. $ node-inspector і відкрив 127.0.0.1:8080/debug?port=5858 у chrome. Я зміг побачити свої файли на вкладці джерела в webkit-inspector
Начікет

1
Я спробував це, додавши обидва debuggerі точки зупинку в інспекторі, але жоден з них не працював. Будь-яка ідея чому?
Якуб Арнольд

При перегляді ps | grep node(або подібному) переконайтеся, що ви вибрали pid main.js для сигналізації, а не це процес батьківського вузла. Ось як я змусив це працювати.
квінн

4

Я написав невеликий пакет метеорів під назвою meteor-inspector, який спрощує використання node-inspector для налагодження метеорних програм. Він внутрішньо управляє життєвим циклом node-inspector, а отже, користувачеві не потрібно перезапускати налагоджувач вручну після того, як деякі файли змінилися.

Щоб отримати докладнішу інформацію та конкретні вказівки щодо використання, перегляньте https://github.com/broth-eu/meteor-inspector .


4

для метеора 1.3.5.2, запустити

метеорна налагодження --debug-port 5858 + n n - ненульове число, це призведе до використання node-inspector 8080 + n як веб-порту.


3

WebStorm , потужна IDE, безкоштовна для розробників з відкритим кодом, значно полегшує налагодження на стороні сервера.

Я протестував його на Windows, і конфігурація була безболісною - див. Мою відповідь .


3

Інспектором, який вирішує мої проблеми, є консоль сервера метеоритів. Ось процес, за яким я встановив його:

  1. У папку проекту додайте розумний пакет server-eval:

    mrt add server-eval
    

    Для Meteor 1.0:

    meteor add gandev:server-eval
    
  2. Перезапустіть метеор.

  3. Завантажте crxфайл розширення Chrome звідси .
  4. Відкрийте сторінку розширень у Chrome і перетягніть crxфайл на сторінку розширень.
  5. Перезапустіть Chrome.
  6. Перевірте веб-інспектор, щоб оцінити код на стороні сервера:

    введіть тут опис зображення

У порівнянні з node-inspector, я маю більш чіткий результат.


наскільки я пам’ятаю, це працювало з точками зупинки, але я не впевнений.
сайти

ви пам’ятаєте, як ви їх встановлювали? за допомогою dev tools або incode?
Сабріна Леггетт

dev tools, але не пам’ятаєте, як саме
сайти

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.