Запуск нод-инспектора вместе с нодмоном?

В настоящее время я использую узел вместе с nodemon. Затем я подумал, что иногда было бы неплохо использовать инспектор с узлом, поэтому я начал использовать node-spector.

Однако можно ли запустить оба одновременно?

Обычно для запуска nodemon я бы использовал:

nodemon server.js
//and similarly 
node-debug server.js

Я также пробовал:

nodemon --debug http.js

Но, к сожалению, и это не сработало.

Но оба вместе!?


person Jamie Hutber    schedule 11.09.2014    source источник
comment
node-spector & nodemon --debug filename.js должны работать просто отлично. Требуется только одна командная строка   -  person anandharshan    schedule 21.09.2016


Ответы (7)


Вы должны запустить свой сервер с nodemon --debug server.js, а затем вам нужно будет запустить инспектор узлов в отдельном окне терминала, если вы не переводите nodemon в фоновый режим.

person Paul    schedule 11.09.2014
comment
Хм, хорошая идея, я просто не могу заставить ее работать. Может быть, я жду большего от инспектора? Однако я делаю следующее nodemon --debug src/index.js Затем я открываю другой cmd и делаю node-debug index.js Я нахожусь в Windows, кстати :) - person Jamie Hutber; 14.09.2014
comment
Где вы запускаете нод-инспектор? - person Paul; 15.09.2014
comment
Мне потребовалось время, чтобы вернуться сюда :) Но мне пришлось начать другой проект, а затем переехать. Но я вернулся, детка! Одна вещь, хотя @Paul. Возможно, я неправильно понял, для чего на самом деле нужен инспектор узлов. Я надеялся, что если я console.log что-то в своих файлах узлов выведут в NI. Я полагаю, это не так? - person Jamie Hutber; 28.01.2015
comment
Для тех, кто хочет более надежное решение, работающее без взломов Windows, см. мой ответ ниже. - person olive_tree; 15.10.2016

Если вы хотите запустить их как одну команду, это работает для меня: node-inspector & nodemon --debug app.js (заменив app.js на имя вашего скрипта). Если что-то пойдет не так, вам иногда придется вручную убивать node-spector, но запуск команды таким образом дает вам возможность запустить rs для перезапуска nodemon вручную, если это необходимо. ХТН

person rpaskett    schedule 29.09.2014
comment
Это должно быть помечено как правильный ответ на самом деле. Потому что это просто работа!!! Нет необходимости в двух окнах - person Moataz Elmasry; 24.05.2015
comment
у меня не работает с node-spector v0.10.2 и nodemon v1.3.7 в Win7. он просто загрузит инспектор узлов - есть идеи? - person Jörn Berkefeld; 26.06.2015
comment
Это лучший способ сделать это, гарантируя, что инспектор узлов получит обновления кода, когда nodemon обновит себя. Другие методы работают, но не так эффективны. Хотелось бы надеяться, что это будет отмечено как принятый ответ. - person grant; 30.10.2015
comment
@JörnBerkefeld & означает запуск в фоновом режиме только в Unix. В Windows есть разные команды. См. это: superuser.com/a/591084/69693 - person Alex; 07.11.2015

Для тех, кто хочет независимое от ОС решение и никаких хаков для окон и т. д.

Вы можете использовать npm-run-all, инструмент командной строки, который позволяет запускать несколько сценариев npm параллельно или последовательно. Таким образом, вы должны установить свой package.json следующим образом:

"scripts": {
  "start": "npm-run-all --parallel lint start:debug start:server",
  "lint": "eslint . --ext .js",
  "start:debug": "node-debug server.js",
  "start:server": "nodemon server.js"
}

А затем из CLI вы делаете: npm start

Предостережение: по моему опыту, совместное использование nodemon и node-debug иногда приводит к странному поведению инспектора узлов. Так что с тех пор я решил удалить nodemon из своих скриптов при отладке и полагаться на функцию сохранения-живого-редактирования инспекторов узлов для изменения файлов на лету.

person olive_tree    schedule 14.10.2016

Я не мог заставить nodemon хорошо играть с инспектором узлов. После одного изменения он перезапустится, но после этого больше нет. Может быть, это потому, что я использую контейнеры докеров.

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

Запустите приложение следующим образом:

node-inspector --save-live-edit & \
node --debug /app/server.js
person HMR    schedule 01.06.2015

Поскольку я работаю в Linux, я написал bash-скрипт на основе из ответа rpaskett, чтобы вам не нужно было каждый раз помнить эту неуклюжую команду.

Однако я заметил в комментарии, что вы используете Windows. Вот несколько вариантов, которые у вас есть:

Вы можете преобразовать сценарий bash в пакет Windows и сохранить его как C:\Windows\System32\node-DEV.bat. Я сделал это, и это работает на моем ПК с Windows:

@echo off
echo Starting DEV environment for %1
start node-inspector
nodemon --debug %1

Тогда вы сможете запустить node-DEV server.js.

Другой вариант; вы можете запустить что-то вроде nodedev, которое было написано на Node.js, поэтому не зависит от платформы, хотя выглядит как будто давно не обновлялся.

Или вы могли бы даже запустить сценарий bash в среде Cygwin, если бы он у вас был под рукой.

person mattbell87    schedule 31.12.2015

Хакерское исправление для пользователей Windows, использующих оболочку bash:

Сначала добавьте инспектор узлов в свой путь. (Вы можете найти, где npm устанавливает пакеты с помощью npm list -g)

Затем используйте эту команду в bash или добавьте ее в свои сценарии npm:

START /B node-inspector && nodemon --debug server.js

START /B — это команда Windows для запуска в фоновом режиме.

person Samirillian    schedule 18.01.2016

Вы должны установить node-spector и nodemon, используя:

npm install -g nodemon
npm install -g node-inspector

Для запуска в Windows создайте новый файл .bat и добавьте следующие строки:

@echo off
echo Starting developer enviroment of the file %1
start nodemon --debug-brk %1
node-debug %1

И запустите:

node_desarrollo.bat "имя файла для запуска.js"

Если запустить с ошибкой:

Error: listen EADDRINUSE :::5858
    at Object.exports._errnoException (util.js:855:11)
    at exports._exceptionWithHostPort (util.js:878:20)
    at Agent.Server._listen2 (net.js:1237:14)
    at listen (net.js:1273:10)
    at Agent.Server.listen (net.js:1369:5)
    at Object.start (_debug_agent.js:21:9)
    at startup (node.js:72:9)
    at node.js:980:3

Это нормально, потому что нод-инспектор должен открыть этот порт для подключения, но поскольку nodemon --debug-brk %1 был открыт порт 5858, он не может открыть и показать ошибку EADDRINUSE :::5858, обратите внимание, что флаг --debug-brk nodemon необходимо сделать точку останова на первой строке. Попробуйте изменить файл .js после запуска .bat и посмотрите, какие изменения отражаются в отладчике. Этот отладчик перезагружается и показывает изменения, сделанные в файле .js. Удачного кодирования JS!!!

person LordZero    schedule 21.03.2016