2016-12-07 2 views
0

У кого-нибудь есть пример launch.json, который будет работать для кода Visual Studio для подключения или запуска настольной программы NW.JS. Да, я знаю, что NW.JS использует отладчик хрома, и вы можете отлаживать его напрямую. Но было бы неплохо иметь возможность отлаживать и делать один шаг от VS CODE.Запуск и присоединение к программе NW.JS из кода Visual Studio

Я предполагаю, что он использует порт 9222 (ниже не работает)

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "name": "DOM Debug", 
      "type": "chrome", 
      "request": "launch", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     }, 
     { 
      "name": "Node Debug", 
      "type": "chrome", 
      "request": "launch", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "url": "chrome-extension://*/_generated_background_page.html", 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     } 
    ] 
} 

Прикрепленный ниже журнала:

Vscode log

ответ

0

я могу отладить NW.JS приложений с модифицированным Debugger для Расширение Chrome и следующие конфигурации в файле launch.json. Обратите внимание, что у меня есть одна конфигурация для отладки контекста браузера, а другая для отладки контекста узла. Я пробовал смешанный режим, но точки останова никогда не попадали. Эта настройка предполагает, что файлы приложений и исполняемый файл NW.JS находятся в одном каталоге.

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "chrome", 
      "request": "launch", 
      "name": "nwjs DOM debug", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     }, 
     { 
      "type": "chrome", 
      "request": "launch", 
      "name": "nwjs Node debug", 
      "runtimeExecutable": "${workspaceRoot}/nw.exe", 
      "runtimeArgs": [ 
       "${workspaceRoot}", 
       "--remote-debugging-port=9222" 
      ], 
      "url": "chrome-extension://*/_generated_background_page.html", 
      "webRoot": "${workspaceRoot}", 
      "sourceMaps": false, 
      "diagnosticLogging": true, 
      "port": 9222 
     } 
    ] 
} 

Я изменил отладчик для расширения Chrome, изменив функцию, чтобы все сценарии, находящиеся быть загружены и нанесены на карту. Отладчик обычно исключает расширение: // и chrome-extension: // scripts.

В файле [расширения путь] \. Vscode \ расширения \ msjsdiag.debugger-для-хром-2.3.2 \ node_modules \ vscode-хром-отладки ядра \ из \ SRC \ хром \ chromeDebugAdapter.js изменения функция shouldIgnoreScript() возвращает false.

shouldIgnoreScript(script) { 
    return false;//script.url.startsWith('extensions::') || script.url.startsWith('chrome-extension://'); 
} 

Одним из побочных эффектов, когда отладчик запускается в контексте узла, вы получите много сообщений о том, что отладчик не может найти собственные модули узла для NW.JS. Ничего страшного, если вам не нужно вступать в них.

Эта настройка работает для меня, но она по-прежнему нестабильна, и соединение веб-соединения отладчика будет казаться случайным. Но он достаточно надежный для отладки, не прибегая к большому количеству console.logs().

+0

Я следовал вашим непогашенным (на самом деле в превосходной степени!) Инструкциям (см обновленного запуска. json), и отредактировал расширения, и поместил все это в папку ws. Я запускаю отладчик DOM, но он по-прежнему показывает точку останова. Могу ли я показать вам журнал? (окна 7, 64 бит). VScode 1.7.2 (но запущенный узел 7.2 на компьютере) –

+0

А, к сожалению, это не сработало. Конечно, я посмотрю ваш журнал. Одна вещь, которую вы можете проверить, - это события Debugger.scriptParsed в подробном журнале отладчика и подтверждение того, что упоминаются ваши js-файлы (или бросить logger.log (script.url) в этом методе выше). У меня возникла проблема, когда я впервые установил проект, в котором Chrome объединил мои файлы javascript в один eval (возможно, оптимизация?), И отладчик пропускает их. Но после того, как я добавил больше кода, Chrome переключился на парсинг целых файлов, и отладчик начал работать. – Craig

+0

Я добавил ссылку на журнал. Я также попытался добавить около 100 строк javascript в файл index.js. Я не вижу сообщение синтаксического анализа.У меня также есть проблемы с отладкой со встроенным отладчиком. I, когда я устанавливаю точки останова в методе onload = "start()", см. Большое нажатие CNTRL-P на вкладке источника. Не источник и не находится в точке останова. –

1

Обновление для ответа Крэйга.

Debugger для Chrome расширения версии 3.1.8 требует различных изменений:
В [extensions path]\.vscode/extensions/msjsdiag.debugger-for-chrome-3.1.8/out/bundle.js заменить

exports.targetFilter = target => target && (!target.type || target.type === 'page'); 

с

exports.targetFilter = null; 
Смежные вопросы