在SAP Cloud Foundry上远程调试node.js应用程序

时间:2019-07-24 12:30:38

标签: javascript typescript sap-cloud-platform sap-cloud-sdk

我们已经在SAP Cloud Foundry上托管了多个node.js Express服务。由于我们无法进一步解决此问题,并且可能其他人面临this问题,因此以下是关于此的明确问题:
您如何远程调试SAP Cloud Foundry上托管的node.js应用程序(我们自己的)?
在我们的案例中,我们有一个快递服务,该服务使用SAP Cloud SDK(v1.6.1)从SAP Cloud和OnPremise提供各种数据。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是最好的方法,但是它对我有用,所以去:

首先,您需要在manifest.yml中调整应用程序的开始command,以便能够附加调试器。例如:

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开始(您可能不希望这样做)默认情况下针对生产性应用执行)。我还没有找到解决方案。因此,如果您已经在高效运行,则可能需要单独部署。