Удаленная отладка моего приложения node, размещенного на AWS
Я хотел бы подключиться к моему серверу node, запущенному в режиме отладки в AWS (node --debug app.js) с моей машины разработки, и иметь возможность удаленно отлаживать мое приложение.
Два вопроса:
-
Могу ли я сделать это с помощью node-inspector? Я бы хотел, но node -инспектор не смог установить на моем AWS-экземпляре.
-
Любые альтернативы, которые позволят мне сделать это?
Ответы
Ответ 1
И с помощью ответа tepez для меня работало следующее (Node Inspector v0.12.2):
На моей машине:
ssh -L 8080:127.0.0.1:8080 <username>@<host> -N
На удаленном сервере:
node-debug --cli <appname>
И введите в браузере следующий адрес:
127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858
Ответ 2
Перенаправить удаленный порт отладчика с помощью ssh из вашей машины
ssh -L 5858:127.0.0.1:5858 [email protected]
И теперь вы можете запустить node-inspector
, как если бы отладчик работал локально.
Ответ 3
Еще один вариант использования 0.0.0.0
для прослушивания запроса извне:
node-debug --web-host=0.0.0.0 --cli app.js
и посетите этот адрес для отладки:
http://<the-domain>:8080/?port=5858
было бы лучше, если бы HTTP/2 был доступен, так как есть много небольших файлов.
Ответ 4
Также вы можете указать аргумент --web-host
.
node-inspector --web-host host.amazonaws.com
Ответ 5
Позвольте мне представить альтернативное использование node --inspect
. У меня была такая же потребность, хотя в среде Windows, я считаю, это должно работать для вас.
Удаленный компьютер (протестирован с Node 6.10.2, Windows Server 2012)
node --inspect=0.0.0.0:9229 <appname>.js
Локальный компьютер (протестирован с Win 10, Chrome 60.0.3112.90)
В Chrome DevTools - щелкните вертикальное меню с многоточием в правом верхнем углу:
- Перейти к: Дополнительные инструменты → Удаленные устройства
- Под Сетевыми целями нажмите Добавить адрес
- Введите
<remote-ip>:9229
- Как только вы введете адрес и подключитесь к удаленной цели, вы увидите значок Node.JS в левом верхнем углу DevTools
- Нажмите NodeJS Logo, чтобы запустить DevTools Node Debugger.
Скриншоты шагов 1,3,4 ниже.
![DevTools Menu]()
![Remote Target Connected]()
Ответ 6
Вы также можете использовать node --inspect
на удаленном компьютере.
- Запустите node с помощью
node --inspect myapp.js
- Тогда локально
ssh -L 9229:127.0.0.1:9229 [email protected] -N
- Найдите строку в заголовке журнала и скопируйте ее
chrome-devtools://devtools/remote/serve_file/@60cd6e859b9ff284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/bef2ae68
- Вставьте его в свой браузер Chrome
Наслаждайтесь:)
Если вы используете pm2
, просто добавьте это на свой файл system.js
"apps": [{
"name": "myapp",
"script": "index.js",
"node_args": ["--inspect"],
...
Ответ 7
Это то, что сработало для меня:
- Запустите node -инспектор на сервере.
- Запустите debugee на удаленном сервере с флагом
--debug
.
- Обратите внимание на порт, который прослушивает отладчик, т.е.
Debugger listening on port DEBUG_PORT
.
- Создайте туннель ssh для порта
8080
, а не DEBUG_PORT
, как предполагает ответ Андрея Сидорова.
- Откройте
SERVER_API:8080/debug?ws=127.0.0.1:8080&port=DEBUG_PORT
в браузере voilà.
Node Инспектор v0.10.1
Ответ 8
Permission denied (publickey)
Что делать с открытым/закрытым ключом?