Удаленная отладка приложения node.js в SAP Cloud Foundry
Мы разместили несколько экспресс-сервисов node.js в SAP Cloud Foundry. Так как мы не можем больше заниматься этой проблемой, и, возможно, другие столкнулись с этой проблемой, вот явный вопрос по этому поводу:
Как вы можете удаленно отлаживать приложение node.js (наше), размещенное на SAP Cloud Foundry?
В нашем случае у нас есть экспресс-служба, которая использует SAP Cloud SDK (v1.6.1) для предоставления различных данных из SAP Cloud и OnPremise.
1 ответ
Я не уверен, что это лучший подход, но он работает для меня, так что здесь идет:
Для начала нужно адаптировать старт command
вашего приложения в manifest.yml, чтобы вы могли присоединить ваш отладчик. Например:
command: node --inspect --require ts-node/register src/index.ts
В этом примере я использую TypeScript, если вы используете простой JS, он будет выглядеть примерно так:
command: node --inspect src/index.js
Далее, чтобы иметь возможность подключить отладчик к инспектору, вам нужно открыть ssh-туннель для вашего приложения, например так:
cf ssh <APP_NAME> -N -T -L 9229:127.0.0.1:9229
Это позволит туннелировать порт 9229 вашего локального компьютера на порт 9229 в контейнере, в котором работает ваше приложение (9229 - это порт по умолчанию, на котором работает инспектор).
Наконец, (и я предполагаю, что вы используете код VS здесь), вам нужно запустить свой отладчик. Вот конфигурация, которую я использую для этого:
{
"type": "node",
"request": "attach",
"name": "Attach to Remote",
"address": "localhost",
"port": 9229,
"localRoot": "${workspaceFolder}",
"remoteRoot": "/home/vcap/app"
}
Недостаток этого подхода (по сравнению с отладкой Java-приложения) в том, что теперь есть способ присоединиться к работающему приложению, потому что вам нужно будет начать с --inspect
(что вы, вероятно, не захотите делать по умолчанию для продуктивного приложения). Я не нашел решения для этого еще. Таким образом, вы можете иметь отдельное развертывание, если вы уже работаете продуктивно.