Подтвердить что ты не робот

Могу ли я получить node - обязательно открыть Chrome автоматически

В новых версиях node, node -инспектор встроен и может быть запущен с помощью команды node --inspect index.js. Однако это всегда обеспечивает командную строку с адресом, который вы должны подключить к адресной строке. Я знаю, что это может быть не самым "безопасным", но есть ли способ устранить этот шаг копирования и вставки?

4b9b3361

Ответ 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), но предлагал бы одно из следующего:

Ответ 4

Хотя это не отвечает конкретно на вопрос, это делает вопрос менее актуальным - после подключения вам не нужно повторно подключаться.

Я пробовал все предложения здесь и другие сообщения например, но я обнаружил, что debug-in-a-tab никогда не будет повторно подключаться, как только часы супервизора создадут новый GUID - адрес на вкладке устарел.

Однако я нашел новую ссылку в стандартной панели разработчика (58), которая открывает новое окно без заголовка, которое восстанавливает магию независимо от того, как приложение будет восстановлено/перезапущено.

В разделе "Темы" > "Главная" вы увидите "доступный экземпляр Node. Connect". введите изображение здесь

Я считаю, что новое окно менее пригодно для использования, так как я предпочел бы вкладку, но автоподключение будет настолько надежным, что я буду жить с этим!

Единственный недостаток, который я обнаружил, - это когда он повторно соединяет его, очищает все точки останова.

UPDATE: Ive обнаружил, что можно решить проблему точек останова при перезагрузке, если вы откроете несколько окон отладки, используя ссылку "Подключиться" в разделе "Отладка Chrome" > "Источники" > "Темы" > "Главная". Большинство из них будут пустыми и даже не будут содержать в себе какие-либо источники, но тот, который правильно подключен, в конечном итоге сохранит закладки. Я не знаю, почему этот хак работает - я обнаружил его по ошибке.

Также эта статья Hackernoon обсуждает проблему, и инструмент NIM рекомендуется в качестве решения и общего улучшения управления инспектором (также предложенный в ответ Адрианом Моисой).

Обновление (08/2017)

Кажется, Chrome v60 изменил DevTools на Node, переместив ссылку, которую я описал, на маленькую иконку зеленого окна в верхнем левом навигационном баре инструментов JS dev. Node значок Devtool

Однако теперь мой брейк-пойнт перестает работать, поскольку вы больше не можете открывать несколько окон. К сожалению, они также не исправили проблему исчезновения контрольных точек. Итак, теперь я возвращаюсь к его закрытию и каждый раз открываю его... Это лишний раздражает, поскольку он даже не помнит его положение в окне (мне нравится перемещать его, чтобы отличать его от внешнего окна отладки JS, которое я одновременное использование полного стека...), ни факт, что я уже закрыл все эти вкладки исходного файла (теперь я перестану писать).

Ответ 6

Это невозможно по нескольким причинам.

  • Запуск приложения Chrome (или другого "рабочего стола" ) зависит от платформы. Core Node не может этого сделать, и это добавит излишнюю сложность (например, подумайте об обнаружении места установки, об установке Chrome и т.д.).
  • Это привяжет Node к Chrome, что нежелательно.
  • Chrome не предоставляет способ передать URL-адрес devtools из командной строки.