Как отлаживать модульное приложение node.js, в котором файлы включены как модули
Большинство моих приложений node.js написаны модульно с использованием require()
таким образом, что большинство реальных программ происходит за пределами index.js
файл.
Я обнаружил, что при использовании node --inspect=0.0.0.0 index.js
Я могу только установить контрольные точки и оценить программу, когда она запускается в index.js
,
Как настроить отладчик node.js (или любой другой метод) таким образом, чтобы в отладчике я мог просматривать определенные модули, принадлежащие моему приложению?
Также я использую Visual Studio Code для отладки.
Я запускаю все свои приложения из док-контейнеров, поэтому в качестве адреса я использую 0.0.0.0.
Я пытался:
node --inspect=0.0.0.0 index.js
который подключается к отладчику, но видит только index.js
так же как:
node index.js --inspect src/core/my_module.js
который даже не запускает отладчик
Затем я подключаюсь к отладчику с помощью кода Visual Studio и могу устанавливать точки останова в index.js. Однако я не могу увидеть или установить точки останова ни в одном из моих файлов модулей, которые есть в index.js, например const my_module = require('my_module')
Я ожидаю, что есть какой-то способ отладки полностью модульного приложения с помощью node.js и кода Visual Studio. Как это может быть сделано?
-Спасибо за ваше время
2 ответа
В VSC в левой колонке отладки есть вкладка с надписью LOADED SCRIPTS.
Если вы установите точку останова чуть ниже операторов require() для интересующих модулей и запустите программу до этой точки останова, вы сможете увидеть эти файлы в разделе LOADED SCRIPTS и установить точки останова в них так же, как вы бы индексировали.js
Я не уверен, как это можно сделать в коде Visual Studio, но когда я отлаживаю свой скрипт в инструментах разработчика Chrome с node --inspect-brk test.js
и выполнение останавливается в первой строке, я могу нажать на кнопку "Добавить папку в рабочую область", чтобы включить папки модуля в дерево файлов, открыть модуль, установить точку останова и продолжить выполнение:
Может быть, есть что-то похожее в коде VS?