Как запустить jscodeshift в режиме проверки?
Раньше это работало, но недавно я столкнулся со следующей проблемой.
Запустив следующую команду:
узел --inspect-brk ./node_modules/.bin/jscodeshift файл mod.js.
Я сталкиваюсь с этой проблемой
Debugger listening on ws://127.0.0.1:9229/7e57a2d3-0885-44b3-b51e-b47dc8417d87
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
Processing 1 files...
Spawning 1 workers...
Sending 1 files to free worker...
Starting inspector on 127.0.0.1:9229 failed: address already in use
All done.
Results:
0 errors
0 unmodified
0 skipped
0 ok
Time elapsed: 0.035seconds
3 ответа
Что сработало для меня:
- Начать узел-инспектор
- Установите jscodeshift в моем локальном репозитории как зависимость от разработчика.
- поместите отладчик в мой скрипт
запустить jscodeshift через узел с
--debug-brk
Арг и добавил--run-in-band
jscodeshift param. Например:- Я ввел узел--debug-brk ./node_modules/jscodeshift/bin/jscodeshift.sh -t my-refactor-script.js --run-in-band
Если вы добавляете шаблон файла в конце, он работает нормально, что в случае отладки полезно, когда вы хотите протестировать только один файл с проблемами.
Я не тестировал отладку jscodeshift
установлен через npm -g
Ответ, который работал для меня, устанавливал ndb
https://github.com/GoogleChromeLabs/ndb и добавьте к нему префикс команды.
Узел ndb --inspect-brk ./node_modules/.bin/jscodeshift mod.js
Причина, по которой режим проверки не работает, заключается в том, что другой процесс (например, другой экземпляр инспектора) уже использует порт по умолчанию (9229
), поэтому они противоречат друг другу. Либо используйте другой порт для инспектора, либо завершите процесс, который в данный момент использует этот порт.
Если вы используете другой порт, вы сможете запустить инспектор. Просто введите желаемый номер порта (например, 39479
) чтобы --inspect-brk
,
Ваш пример:node --inspect-brk ./node_modules/.bin/jscodeshift mod.js file.
Например, может быть: node --inspect-brk=39479 ./node_modules/.bin/jscodeshift mod.js file.
ОПАСНОСТЬ: Если вам нужен порт 9229, вы можете убить процесс / инспектора, который в данный момент использует этот порт, но если вы не знаете, что делает этот процесс, вы можете повредить вещи: lsof -i TCP:9229 | grep LISTEN | awk '{print $2}' | xargs kill -9