Node -инспектор с Express 4

Я пытаюсь запустить node-inspector с помощью приложения Express 4 - я запускаю это в окне Vagrant, но могу просматривать страницы в браузере без проблем (у меня есть порты на бродяжной машине, доступной для хост-машины).

Я запускаю приложение либо с помощью npm start, либо node --debug bin/www, а затем запустите node -debugger bin/www. Я загружаю инспектор в браузер, и он попадает в начальную точку останова в первой строке, но выполняет любое действие на странице для отладки, которая приведет к срабатыванию точки останова, вызвав ошибку EADDRINUSE (так называемый порт). Я немного озадачен тем, что может быть причиной этого, однако очень возможно, что я использую команды, которые будут работать на Express 3 вместо 4. Кроме того, возможно, есть какая-то конфигурация, которую мне не хватает для запуска отладчика на браузер хост-машины, но работает инспектор на бродячем поле?

Ответ 1

Обновить. Я уверен, что это ваша проблема:

node --debug bin/www, а затем запустите node -debugger bin/www.

Не выполняйте ОБА. Это одно или другое. Это два способа сделать то же самое. Я предпочитаю прежний путь, поскольку он проще и работает с самим node независимо от того, используете ли вы node -инспектор.

Подводя итог:

  • node-debug bin/www запускает оба приложения в режиме отладки И node -инспектор в том же процессе
  • node --debug bin/www запускает ваше приложение в режиме отладки. Это должно сочетаться с отдельным окном терминала, в котором вы запускаете node-inspector как отдельный процесс. Я рекомендую этот подход, но и должен работать.

Здесь мое предложение начать поиск и устранение неполадок. Попробуйте использовать простейшую форму команд для запуска всего:

  • в одном сеансе сеанса ssh внутри вашего бродячего хоста, запустите приложение прямо на переднем плане с помощью node --debug ./bin/www
    • v8 попытается привязать к порту 5858. Вы должны увидеть это сообщение "отладчик, прослушивающий порт 5858", и НЕ это сообщение "Не удалось открыть сокет на порту 5858, ожидая 1000 мс перед повторной попыткой"
    • Если вы видите сообщение "Не удалось открыть сокет на порту 5858", другой процесс уже прослушивается. запустите sudo netstat -ntlp, чтобы узнать, какой процесс он, понять, что это такое и почему он запущен, а затем убить его, чтобы освободить порт kill <pid-you-got-from-netstat>
  • В отдельном сеансе сеанса ssh внутри вашего бродячего хоста запустите веб-сервер node -inpector node-inspector на переднем плане. Убедитесь, что вы видите нормальный выход и никаких ошибок.
  • Теперь подключитесь к правильному URL-адресу, который, вероятно, что-то вроде http://localhost:8080/debug?port=5858 (если ваш брандмауэр IP/порт не отличается)
  • если вы доберетесь туда и устраните все непредвиденные ошибки, которые вы видите на этом пути, все должно работать, но если вы не опубликуете некоторые точные сведения об этой ошибке EADDRINUSE, вы увидите. Это исключение в самом приложении? Если да, существует ли устаревший экземпляр вашего экспресс-приложения, уже запущенного в другом месте вашего бродячего хоста и связанного таким образом на вашем веб-сервере вашего приложения?

Ответ 2

Тот же процесс работает с супервизором.