Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在SAP Cloud Foundry上远程调试node.js应用程序_Javascript_Typescript_Sap Cloud Platform_Sap Cloud Sdk - Fatal编程技术网

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

Javascript 在SAP Cloud Foundry上远程调试node.js应用程序,javascript,typescript,sap-cloud-platform,sap-cloud-sdk,Javascript,Typescript,Sap Cloud Platform,Sap Cloud Sdk,我们在SAP Cloud Foundry上托管了多个node.js express服务。因为我们无法进一步解决这个问题,也许其他人也面临这个问题,这里有一个明确的问题: 如何远程调试托管在SAP Cloud Foundry上的node.js应用程序(我们自己的应用程序) 在我们的案例中,我们有一个express service,它使用SAP Cloud SDK(v1.6.1)从SAP Cloud和OnPremise提供各种数据。我不确定这是否是最好的方法,但它对我有效,因此: 首先,您需要在ma

我们在SAP Cloud Foundry上托管了多个node.js express服务。因为我们无法进一步解决这个问题,也许其他人也面临这个问题,这里有一个明确的问题:
如何远程调试托管在SAP Cloud Foundry上的node.js应用程序(我们自己的应用程序)

在我们的案例中,我们有一个express service,它使用SAP Cloud SDK(v1.6.1)从SAP Cloud和OnPremise提供各种数据。

我不确定这是否是最好的方法,但它对我有效,因此:

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

command: node --inspect --require ts-node/register src/index.ts
在本例中,我使用的是TypeScript,如果您使用的是纯JS,它可能会如下所示:

command: node --inspect src/index.js
接下来,为了能够将调试器连接到检查器,您需要打开应用程序的ssh隧道,如下所示:

command: node --inspect src/index.js
cf ssh-N-T-L 9229:127.0.0.1:9229
这将通过隧道将本地计算机的端口9229连接到运行应用程序的容器上的端口9229(9229是inspector运行的默认端口)

最后,(我假设您在这里使用VS代码),您需要启动调试器。以下是我为此使用的配置:

{
  "type": "node",
  "request": "attach",
  "name": "Attach to Remote",
  "address": "localhost",
  "port": 9229,
  "localRoot": "${workspaceFolder}",
  "remoteRoot": "/home/vcap/app"
}

这种方法的缺点是(与调试Java应用程序相比),现在有了连接到正在运行的应用程序的方法,因为您需要使用
--inspect
启动应用程序(对于生产性应用程序,默认情况下您可能不希望这样做)。我还没有找到解决这个问题的办法。因此,如果您已经在高效运行,您可能需要单独部署。

看起来不错!我想添加一些步骤(可能已经完成了):1)为您的共享空间启用ssh:cf allow space ssh[spacename]2)cf enable ssh[yourapp]3)重新启动您的应用程序,以便前面的命令生效