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

Как отключить отладчик node "перерыв в первой строке"

Есть ли аргумент командной строки или переменная среды, которая отключает функцию "break on first line" отладчика node?

4b9b3361

Ответ 1

По этот вопрос Я открыл в node repo, в настоящее время это невозможно. Это также то, что ребята node не видят в качестве функции, которая стоит реализовать ", потому что это кажется бессмысленным. [...] Привязка к запущенному процессу делает именно то же самое. См. Остальную часть обсуждения в упомянутой проблеме.

Если вы считаете, что хотите такую ​​функцию, проголосуйте за это, оставьте комментарий в проблеме Github и, если нет ответа, откройте новый и разместите его здесь.

Ответ 2

В node существуют две концепции отладчика: отладчик V8 (с его протоколом на основе TCP) и отладчик командной строки node (CLI).

При запуске node debug app.js в главном процессе node запускается CLI отладчика, а для отлаживаемого script (node --debug-brk app.js) порождается новый дочерний процесс node. Опция --debug или --debug-brk используется для включения отладчика V8 в дочернем процессе.

Разница между --debug и --debug-brk заключается в том, что последняя добавляет точку останова в первую строку, так что выполнение немедленно останавливается там.

Я предлагаю вам это решение:

  • Когда вы создаете дочерний процесс со своего веб-сервера, запустите node --debug вместо node debug. Таким образом, создается только один дочерний процесс, он запускает ваше приложение и не приостанавливается в первой строке.

  • Теперь вы можете использовать любой инструмент отладки, поддерживающий протокол отладки V8 - встроенный отладчик CLI node, node-inspector, или вы можете, если хотите, реализовать собственный собственный интерфейс отладчика (GUI). (Я полагаю, это то, чего вы пытаетесь добиться, запустив отладчик CLI в фоновом режиме?)

    Если вы решили использовать встроенный CLI, просто введите еще один дочерний процесс и сообщите node отладчику CLI для подключения к процессу, запущенному на шаге 1:

    node debug localhost:5858

    и продолжайте, как раньше.

Ответ 3

Нашел это, ища сам ответ - Кажется, вы можете просто запустить

node-debug --debug-brk=0 (progname)

Надеюсь, это поможет кому-то.

Ответ 4

Записать расширение chrome, чтобы нажать кнопку запуска

1. Выполнить оболочку

mkdir run_as_devtools
cd run_as_devtools
touch manifest.json
touch run_as_devtools.js

2. Отредактируйте файлы

run_as_devtools.js:

if (location.protocol === 'chrome-devtools:' && location.href.match(/ws=localhost/))(function () {
    'use strict';
    setTimeout(function () {
        try {
            document.querySelector('html /deep/ .long-click-glyph').click();
        } catch (e) {
            console.log(e);
        }
    }, 500);    
})();

manifest.json: (он использует ключ хромовокса, поэтому не используйте его с chromevox)

{
   "content_scripts": [{
      "js": [ "run_as_devtools.js" ],
      "matches": [ "<all_urls>" ]
   }],
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
   "manifest_version": 2,
   "name": "Elevated Devtools extension",
   "version": "1.0"
}

3. Установите расширение

Настройки Chrome - Дополнительные инструменты - Расширения - Режим разработчика - Загрузка распакованного расширения - выберите папку run_as_devtools

P.S. Лучше использовать его с диспетчером Node fooobar.com/questions/133402/...

Ссылка: fooobar.com/questions/43251/...

Ответ 5

Я решил такую ​​же проблему, просто переключившись с node v6 на v7

Ответ 6

Как и идея blackmiaool, но проще, с node v8 вы можете запустить script с помощью --inspect. Если в нем есть следующий код, когда вы открываете окно отладки в Chrome devtools, он доставит вас прямо в точку отладчика. Кроме того, это позволяет вам выполнить асинхронный код, нажав кнопку "продолжить", которая позволяет вашему коду запускаться, прежде чем возвращать вам ответ:

// app_shell.js

var UserModel = require("./some_user_model");

function looper() {
    var Tmp = { UserModel: UserModel };
    debugger;
    setTimeout(looper, 100);
}
looper();

И в оболочке script вы можете сделать что-то вроде:

echo "Click the 'Open dedicated DevTools for Node' link"
python -mwebbrowser about:inspect
node --inspect app_shell.js

Подробнее см. здесь