Метеор: отладка на стороне сервера

Кто-нибудь знает хороший метод для отладки кода на стороне сервера? Я попытался включить отладку Node.js, а затем использовать инспектор узлов, но он не показывает мой код.

Я в конечном итоге использую 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. Запустите инспектор узлов, и вы увидите код своего сервера

С первой попытки я изменяю последнюю строку сценария запуска метеора в /usr /lib /meteor /bin /meteor на

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "[email protected]"

и запустите NODE_DEBUG=--debug meteor в командной строке. Это только поставило флаг --debug на process1, поэтому я вижу только метеорные файлы на узле-инспекторе и не смог найти свой код.

Может кто-нибудь проверить это на Windows и Mac?

78 голосов | спросил user1416682 14 J0000006Europe/Moscow 2012, 18:11:12

12 ответов


0

В 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
ответил Sander van den Akker 22 FebruaryEurope/MoscowbFri, 22 Feb 2013 14:20:59 +0400000000pmFri, 22 Feb 2013 14:20:59 +040013 2013, 14:20:59
0

Приложения Meteor - это приложения 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 говорит вам запускаться.

ответил Sergey.Simonchik 14 FebruaryEurope/MoscowbThu, 14 Feb 2013 15:07:28 +0400000000pmThu, 14 Feb 2013 15:07:28 +040013 2013, 15:07:28
0

Чтобы запустить node.js в режиме отладки, я сделал это следующим образом:

  1. open /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. запустить, подождите, пока отладчик не будет запущен

когда вы запустите meteor в папке приложения meteor, вы увидите, что «консоль прослушивает порт 5858 » в консоли.

ответил Mason Zhang 29 J000000Sunday12 2012, 17:15:22
0

На Meteor 1.0.3.1 (обновление до ответа Sergey.Simonchik)

Запустите свой сервер с помощью meteor run --debug-port=<port-number>

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

Где <port-number> - указанный вами порт.

В своем коде добавьте debugger;, где вы хотите установить точку останова.

В зависимости от того, где вызывается debugger;, он будет ломаться в окне браузера клиента или сервера с открытым инспектором.

ответил ferndopolis 18 FebruaryEurope/MoscowbWed, 18 Feb 2015 03:56:57 +0300000000amWed, 18 Feb 2015 03:56:57 +030015 2015, 03:56:57
0

Мне нравится устанавливать точки останова через графический интерфейс. Таким образом, мне не нужно удалять код отладки из моего приложения.

Вот как мне удалось сделать это на стороне сервера для моего локального метеорного приложения:

meteor debug

запустите ваше приложение таким образом.

Откройте Chrome по адресу, который он вам дает. Вам МОЖНО установить https://github.com/node-inspector/node-inspector (сейчас он может поставляться в комплекте с Meteor? Не уверен)

Вы увидите какой-то странный внутренний код метеора (а не код приложения, который вы написали). Нажмите кнопку воспроизведения , чтобы запустить код. Этот код просто запускает ваш сервер для прослушивания соединений.

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

Откройте локальный адрес вашего приложения . Это запустит ваш код на стороне сервера, и вы сможете достичь своей точки останова!

Примечание. Вы должны заново открывать инспектор и повторять этот процесс каждый раз при перезапуске приложения!

ответил Sabrina Leggett 2 12015vEurope/Moscow11bEurope/MoscowMon, 02 Nov 2015 19:11:37 +0300 2015, 19:11:37
0

Начиная с Meteor 1.0.2, вероятно, лучший способ отладки на стороне сервера - непосредственно через новую встроенную оболочку: с запущенным сервером запустите meteor shell. Более подробная информация здесь: https://www.meteor.com /блог /2014/12/19 /метеор-102-метеор-оболочка

ответил Christian Fritz 29 Jam1000000amThu, 29 Jan 2015 08:19:26 +030015 2015, 08:19:26
0

Я не уверен, почему это не сработало для вас.
Я могу использовать его, выполнив следующие действия на консоли (Mac).

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

Вышеупомянутые шаги упомянуты в https://github.com/dannycoates/node-inspector , Он предназначен для подключения инспектора узла к запущенному процессу узла.

ответил Nachiket 14 J0000006Europe/Moscow 2012, 22:21:35
0

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

Для получения более подробной информации и конкретных инструкций по использованию посетите https://github.com/broth. -EU /метеора-инспектор .

ответил broth-eu 14 SatEurope/Moscow2013-12-14T14:07:24+04:00Europe/Moscow12bEurope/MoscowSat, 14 Dec 2013 14:07:24 +0400 2013, 14:07:24
0

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

  

отладка метеорита --debug-порт 5858 + n   n является ненулевым числом, это заставит узел-инспектор использовать 8080 + n в качестве веб-порта.

ответил user7378851 5 Jpm1000000pmThu, 05 Jan 2017 14:14:31 +030017 2017, 14:14:31
0

WebStorm , мощная IDE, бесплатная для разработчиков с открытым исходным кодом, значительно упрощающая отладку на стороне сервера.

Я тестировал его в Windows, и конфигурация прошла безболезненно - см. мой ответ .

ответил Dan Dascalescu 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 06:03:00 +0400000000amWed, 12 Feb 2014 06:03:00 +040014 2014, 06:03:00
0

Инспектором, который решает мои проблемы, является консоль метеорного сервера. Вот процесс, которым я следовал, чтобы установить его:

  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. Проверьте веб-инспектор, чтобы проверить код на стороне сервера:

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

По сравнению с инспектором узлов у меня более четкий вывод.

ответил juanpastas 2 J000000Wednesday14 2014, 03:11:03
0

Если вы предпочитаете использовать официальный отладчик nodeJS , вы можете вызвать NODE_OPTIONS='--debug' meteor, а затем (в другой оболочке) node debug localhost:5858.

ответил Tomas Romero 18 22014vEurope/Moscow11bEurope/MoscowTue, 18 Nov 2014 20:44:46 +0300 2014, 20:44:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132