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

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

В конечном итоге я использую console.log, но это очень неэффективно.

Обновление: я обнаружил, что на моей машине Linux работает следующая процедура:

  • Когда вы запустите 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

  • Вам нужно отправить kill -s USR1 на process2

  • Запустите node -инспектор и вы увидите код сервера

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

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

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

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

Ответ 1

В Meteor 0.5.4 это стало намного проще:

Сначала запустите следующие команды с терминала:

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

И затем откройте http://localhost:8080 в своем браузере, чтобы просмотреть консоль -spector node.

Обновление

Начиная с Meteor 1.0 вы можете просто набрать

meteor debug

который является, по сути, ярлыком для вышеуказанных команд, а затем запускает инспектор node в вашем браузере, как упоминалось.

Обновление

В Meteor 1.0.2 добавлена ​​консоль или оболочка. Это может пригодиться для вывода переменных и запуска команд на сервере:

meteor shell

Ответ 2

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

Ответ 3

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

  • открыть /usr/lib/meteor/app/meteor/run.js
  • до

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

    добавить

    nodeOptions.push('--debug');
    

Ниже приведены дополнительные практические шаги для присоединения к отладчику eclipse:

  • используйте '--debug-brk' вместо '--debug' здесь, потому что мне легче прикрепить node.js, используя eclipse в качестве отладчика.
  • добавить 'отладчик;' в коде, где вы хотите отлаживать. (Я предпочитаю этот способ лично)
  • запустить метеорит в консоли
  • присоединить к node.js в eclipse (инструменты V8, подключиться к localhost: 5858)
  • запустите, подождите, пока отладчик будет поражен.

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

Ответ 4

В Meteor 1.0.3.1 (обновляется ответ Сергея Симончика)

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

Браузер точек http://localhost:6222/debug?port=<port-number>

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

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

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

Ответ 5

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

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

meteor debug

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

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

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

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

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

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

Ответ 6

Как и в случае с Meteor 1.0.2, лучший способ отладки на стороне сервера - напрямую через новую встроенную оболочку: с запуском сервера meteor shell. Подробнее здесь: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell

Ответ 7

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

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

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

Ответ 8

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

Более подробную информацию и конкретные инструкции по использованию см. https://github.com/broth-eu/meteor-inspector.

Ответ 9

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

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

Ответ 10

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

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

Ответ 11

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

  • В папке проекта добавьте смарт-пакет server-eval:

    mrt add server-eval
    

    Для Meteor 1.0:

    meteor add gandev:server-eval
    
  • Перезапустите метеорит.

  • Загрузите crx файл расширения Chrome из здесь.
  • Откройте страницу расширений в Chrome и перетащите файл crx на страницу расширений.
  • Перезапустите Chrome.
  • Проверяйте веб-инспектора на код кода на стороне сервера:

    enter image description here

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

Ответ 12

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