В новых версиях node, node -инспектор встроен и может быть запущен с помощью команды node --inspect index.js
. Однако это всегда обеспечивает командную строку с адресом, который вы должны подключить к адресной строке. Я знаю, что это может быть не самым "безопасным", но есть ли способ устранить этот шаг копирования и вставки?
Могу ли я получить node - обязательно открыть Chrome автоматически
Ответ 1
В Chrome 60+ есть элемент "Открыть выделенный DevTools для Node" в chrome://inspect/#devices
url (а также значок node.js в devtools, а node - запуск) Открытое окно проверки подключается к node.js, как только оно запускается или перезапускается, поэтому нет необходимости открывать его вручную каждый раз.
Ответ 2
Я искал ответ по той же проблеме, и я обнаружил два приятных инструмента:
NIM кажется более продвинутым, он способен автоматически обнаруживать экземпляры node, которые отлично сочетаются с моей текущей настройкой. Я использую nodemon
для автоматического перезапуска сервера node всякий раз, когда файл изменяется. Даже дальше этого я устанавливаю Webpack с HMR (перезагрузка Hot модуля), и у меня есть общий охват папок /public
и /server
. Мне потребовалось 2 недели, чтобы узнать, как настроить, но теперь это начинает окупаться.
npm install -g nodemon
npm install -g ts-node // In case you use typescript
nodemon.json
{
"verbose": false,
"watch": ["server/**/*.ts"],
"ext": "ts js json",
"ignore": ["server/**/*.spec.ts"],
"exec": "set DEBUG=app:*,-not_this & ts-node --inspect --debug-brk server/main.ts"
}
set DEBUG=app:*,-not_this
используется для включения вывода отладка Visionmedia
(!) В настоящее время существует проблема с debug()
не печатать текст в хромовом инспекторе, однако на данный момент по крайней мере текст отображается в командной строке. Я использую командную строку, чтобы видеть операторы отладки и инспектор для расширения объектов.
Edit
Между тем я нашел довольно уродливое исправление, но я выполняю эту задачу, частично... Метаданные цвета игнорируются и хуже отображаются в строках. Так что это плохо влияет на читаемость. Но эй... У меня появились журналы, лучше ничего.
Еще одна проблема, с которой я недавно сталкивался, заключается в том, что NIM неправильно подключался. В конце концов я понял, что мне нужно ввести фактический IP-адрес 127.0.0.1
в панели конфигурации NIM вместо localhost
debugOff
это просто импровизированный способ временно закрывать журналы, пока я не вернусь назад.
// Debug
let debugOff = (...any: any[]) => { }, debug = require('debug')('vs:ServerApp');
// Workaround for debug working with node inspector in chrome
let Debug = require('debug');
Debug.log = console.log.bind(console);
/**
* Listen for incoming requests
*/
public listen(): void {
debug('Start server');
debugOff('Server port:', SERVER.port); // This would be usually too verbose
Ответ 3
Существует отдельная утилита, которая называется inspect-process, но нет встроенной поддержки.
Насколько я вижу, код (С++), который запускает инспектор и выводит это сообщение отладки, находится здесь:
https://github.com/nodejs/node/blob/master/src/inspector_socket_server.cc
В частности, функции InspectorSocketServer::Start
, PrintDebuggerReadyMessage
Я не вижу никакой функции автоматического открытия браузера в этом коде (на момент написания v7.4), но предлагал бы одно из следующего:
- откройте запрос функции здесь https://github.com/nodejs/node/issues
- реализовать функцию самостоятельно и отправить PR
- использовать inspect-process
Ответ 4
Хотя это не отвечает конкретно на вопрос, это делает вопрос менее актуальным - после подключения вам не нужно повторно подключаться.
Я пробовал все предложения здесь и другие сообщения например, но я обнаружил, что debug-in-a-tab никогда не будет повторно подключаться, как только часы супервизора создадут новый GUID - адрес на вкладке устарел.
Однако я нашел новую ссылку в стандартной панели разработчика (58), которая открывает новое окно без заголовка, которое восстанавливает магию независимо от того, как приложение будет восстановлено/перезапущено.
В разделе "Темы" > "Главная" вы увидите "доступный экземпляр Node. Connect".
Я считаю, что новое окно менее пригодно для использования, так как я предпочел бы вкладку, но автоподключение будет настолько надежным, что я буду жить с этим!
Единственный недостаток, который я обнаружил, - это когда он повторно соединяет его, очищает все точки останова.
UPDATE: Ive обнаружил, что можно решить проблему точек останова при перезагрузке, если вы откроете несколько окон отладки, используя ссылку "Подключиться" в разделе "Отладка Chrome" > "Источники" > "Темы" > "Главная". Большинство из них будут пустыми и даже не будут содержать в себе какие-либо источники, но тот, который правильно подключен, в конечном итоге сохранит закладки. Я не знаю, почему этот хак работает - я обнаружил его по ошибке.
Также эта статья Hackernoon обсуждает проблему, и инструмент NIM рекомендуется в качестве решения и общего улучшения управления инспектором (также предложенный в ответ Адрианом Моисой).
Обновление (08/2017)
Кажется, Chrome v60 изменил DevTools на Node, переместив ссылку, которую я описал, на маленькую иконку зеленого окна в верхнем левом навигационном баре инструментов JS dev.
Однако теперь мой брейк-пойнт перестает работать, поскольку вы больше не можете открывать несколько окон. К сожалению, они также не исправили проблему исчезновения контрольных точек. Итак, теперь я возвращаюсь к его закрытию и каждый раз открываю его... Это лишний раздражает, поскольку он даже не помнит его положение в окне (мне нравится перемещать его, чтобы отличать его от внешнего окна отладки JS, которое я одновременное использование полного стека...), ни факт, что я уже закрыл все эти вкладки исходного файла (теперь я перестану писать).
Ответ 5
Да!! Используйте Node.js V8 - менеджер инспекторов (NiM) Плагин Chrome, он автоматически открывает Chrome, когда я запускаю node --inspect-brk app
Ответ 6
Это невозможно по нескольким причинам.
- Запуск приложения Chrome (или другого "рабочего стола" ) зависит от платформы. Core Node не может этого сделать, и это добавит излишнюю сложность (например, подумайте об обнаружении места установки, об установке Chrome и т.д.).
- Это привяжет Node к Chrome, что нежелательно.
- Chrome не предоставляет способ передать URL-адрес devtools из командной строки.