@WantToBelieve

Phpstorm: как отлаживать js запускаемый из командной строки?

Здравствуйте. Я пишу исполняемую node.js утилиту для командной строки.
Вызов происходит командой

gendiff file1.json file2.json

где gendiff это сама команда, далее идут параметры.

package.json содержит секцию
"bin": {
    "gendiff": "bin/gendiff.js"
	},


В gendiff.js указан шенбанг
#!/usr/bin/env node

Мой вопрос в следующем. Как я могу отлаживать работу запускаемых из командной строки скриптов на javascript в Phpstorm?

Существующие инструкции рассказывают о том, как можно отлаживать js с помощью плагинов для браузера или конфигурации node.js в IDE, но там, опять же, требуется браузер.

Есть инструкции, которые описывают отладку скриптов через инспектор nodejs, но мне нужны точки остановки в IDE и прочий функционал отладки Phpstorm.
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@WantToBelieve Автор вопроса
Решение:
1. В конфигурациях отладки Phpstorm создаёте профиль "Attach to Node.js/Chrome",
там укажите параметр Attach to в значении Chrome or Node.js
2. В package.json в секции scripts запишите команду
"произвольное имя": "node --inspect-brk <путь до файла> [параметры]"

3. Запустите команду из консоли npm run <произвольное имя>
4. Запустите настроенную в первом шаге сессию отладки

Всё, скрипт остановится там, где вы указали точки остановки.

Что не сработает:
1. Указание в шебанг
#!/usr/bin/env -S node --inspect
Дело в том, что на Windows это строчка игнорируется, но используется npm при вызове команды npm link, без которой вызов пакета по короткой команде не сработает.
npm link создает команды (читая строку шебанг и параметры из нее) в специальной директории, но там вызов скрипта ссылается на пакет в папке node_modeles.

Получается ваш код запускается из node_modeles, где точек остановки нет и профиль Attach to Node.js/Chrome эту папку по умолчанию игнорирует.
Я пробовал добавить точки остановки и добавить папку в прослушиваемые, но с первого раза не сработало, а больше времени я тратить не хочу.

В деталях могу напутать, если кто поправит буду признателен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Grapeoff
@Grapeoff
В чём концепция...?
Просто в конфигурациях отладки создаёте профиль "Attach to Node.js/Chrome"

62138e0751eba556960758.png
А далее уже как-то запускаете ваше приложение в режиме дебаггинга.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы