【问题标题】:SAP Cloud SDK for javascript using the destinationSAP Cloud SDK for javascript 使用目标
【发布时间】:2020-03-10 08:28:46
【问题描述】:

我已遵循Tutorial 并构建了基于 CF 的基本 nodejs 应用程序,以显示来自我的 S/4HANA 本地目标的所有 BusinessPartners。

function getAllBusinessPartners(): Promise<BusinessPartner[]> {
  return BusinessPartner.requestBuilder()
    .getAll()
    .execute({
      destinationName: 'MockServer'
    });
}

使用来自云连接器的虚拟主机配置目标。

但在部署到 Cloud Foundry 后,我收到以下 GET 请求错误

{"message":"不支持destination类型的服务!考虑在调用destinationForServiceBinding时提供自己的转换函数,如下所示:\n destinationServiceForBinding(yourServiceName, { serviceBindingToDestination: yourTransformationFunction });","level":" warn","custom_fields":{"package":"core","messageContext":"destination-accessor"},"logger":"sap-cloud-sdk-logger","timestamp":"2020-03- 09T18:15:41.856Z","msg":"不支持destination类型的服务!考虑在调用destinationForServiceBinding时提供自己的转换函数,如下所示:\n destinationServiceForBinding(yourServiceName, { serviceBindingToDestination: yourTransformationFunction });"," written_ts":1583777741856,"written_at":"2020-03-09T18:15:41.856Z"}

应用程序也已绑定到目标服务。

有人可以在这里帮助我吗,出了什么问题?还是新版Cloud-SDK使用destination的方式不同?

【问题讨论】:

    标签: sap-cloud-sdk sap-cloud-foundry s4hana


    【解决方案1】:

    经过多次尝试,我已经成功了。

    我的观察:

    1. Connectivity服务也需要绑定,当使用本地S4后端时。

    2. 日志中没有错误,我在代码中做了一些修改以使用async/await

    async function getAllBusinessPartners(): Promise<BusinessPartner[]> {
      return await BusinessPartner.requestBuilder()
        .getAll()
        .execute({
          destinationName: 'MockServer'
        });
    }

    修改后,当我点击GET请求时,它给了我以下错误:

    “获取业务伙伴失败 - 获取对http://s4h-scc-basic:500/sap/opu/odata/sap/API_BUSINESS_PARTNER/sap/opu/odata/sap/API_BUSINESS_PARTNER 的请求失败!”

    可能注意到http://domain:port 之后的suffix 是两次。一个我在目的地提供,另一个 VDM 自动添加。 理想情况下,甚至在添加 async/await 之前就应该抛出此错误。

    从目的地删除suffix后,它开始工作了。

    【讨论】:

      【解决方案2】:

      如果您的请求确实出错,那么您在此处从日志中发布的内容很可能不是失败的原因。我们知道此消息令人困惑,并将对其进行改进 (https://github.com/SAP/cloud-sdk/pull/32)。 你能检查一下你的日志中是否还有更多的错误吗?根据您发布的代码和您描述的设置,这应该可以工作。您是否绑定了 XSUAA 服务。

      【讨论】:

      • 嗨丹尼斯,日志中没有其他错误。是的,我已经绑定了 XSUAA 和 Destination 服务实例。
      • 日志中没有其他错误,但是当您访问您在此处发布代码的那个时,您仍然收到错误?你能以某种方式分享你的代码吗?从我的头顶上,我没有想法......
      • 我已经把代码放在了github - github.com/navinkrishnan/cloud-sdk-node-s4ems.git请检查
      • 我查看了您的代码,三个 cmets:1)您缺少与目标服务的绑定 2)MockServer 不是 CF 服务,您可以将您的应用程序绑定到 3 ) 在您的 getBusinessPartners 函数中,您将 jwt: "my-jwt" 作为参数的一部分传递,这将不起作用。这里请求的 JWT 是用户的访问令牌。由于您的应用不允许用户登录,您可以简单地省略此参数,您不需要它。
      • 感谢您的观察。 1)我的目标服务实例和目标,我都给了与“MockServer”相同的名称。缺少绑定是什么意思?我在 manifest.yml 中给出了 dest 服务实例名称(Mockserver)。还有什么地方可以期待? 3)我已经删除了jwt:“my-jwt”,仍然是同样的错误
      猜你喜欢
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多