首页 > 解决方案 > 错误:找不到文件 /home/vcap/app/xs-app.json

问题描述

正在尝试按照本教程安装 approuter:

https://blogs.sap.com/2017/07/18/step-7-with-sap-s4hana-cloud-sdk-secure-your-application-on-sap-cloud-platform-cloudfoundry/

将 approuter 推送到 CF 时,出现错误:

 2019-04-29T08:39:34.43+0200 [APP/PROC/WEB/0] ERR /home/vcap/app/approuter/lib/environment.js:19
   2019-04-29T08:39:34.43+0200 [APP/PROC/WEB/0] ERR       throw new Error('File not found ' + xsappFile);
   2019-04-29T08:39:34.43+0200 [APP/PROC/WEB/0] ERR       ^
   2019-04-29T08:39:34.43+0200 [APP/PROC/WEB/0] ERR Error: File not found /home/vcap/app/xs-app.json

这是我的 manifest.yml:

---
applications:
- name: xyz
  command: 'node approuter/approuter.js'
  host: xyz-93deb1cd-7b72-4060-94e7-30baef85d259
  path: approuter
  memory: 128M
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack
  env:
    TENANT_HOST_PATTERN: 'xyz(.*).cfapps.eu10.hana.ondemand.com'
    destinations: '[{"name":"service-destination", "url": "https://gfuowb4ett234agtuthorizations-srv.cfapps.eu10.hana.ondemand.com", "forwardAuthToken": true}]'
    SAP_JWT_TRUST_ACL: '[{"clientid" : "*", "identityzone" : "*"}]'

  services:
    - my-xsuaa
    - service-destination

这是我的 xs-app.json,它位于我的“approuter”文件夹中。

{
  "routes": [{
    "source": "/",
    "target": "/",
    "destination": "service-destination"
  }]
}

这是我的文件夹结构

当我将 xs-app.json 移动到预期的根文件夹中时,我收到以下错误消息:

xs-app.json/routes/0: Format validation failed (Route references unknown destination "service-destination")

标签: s4sdksap-cloud-sdk

解决方案


我猜approuter正在查看绑定的目标服务而不是目标环境变量。

我注意到有一个名为“service-destination”的目标服务实例,但是您已经在环境变量中定义了一个同名的目标。

任何一个都应该在场。

我建议要么在环境变量中维护目标并从服务部分中删除条目

---
applications:
- name: xyz
  command: 'node approuter/approuter.js'
  host: xyz-93deb1cd-7b72-4060-94e7-30baef85d259
  path: approuter
  memory: 128M
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack
  env:
    TENANT_HOST_PATTERN: 'xyz(.*).cfapps.eu10.hana.ondemand.com'
    destinations: '[{"name":"service-destination", "url": "https://gfuowb4ett234agtuthorizations-srv.cfapps.eu10.hana.ondemand.com", "forwardAuthToken": true}]'
    SAP_JWT_TRUST_ACL: '[{"clientid" : "*", "identityzone" : "*"}]'

  # remove the service-destination from here and unbind any destination service if already bound
  services:
    - my-xsuaa

或者不维护目标环境变量 - 而是在目标服务实例 GUI 中维护它(来自驾驶舱)

---
applications:
- name: xyz
  command: 'node approuter/approuter.js'
  host: xyz-93deb1cd-7b72-4060-94e7-30baef85d259
  path: approuter
  memory: 128M
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack
  env:
    TENANT_HOST_PATTERN: 'xyz(.*).cfapps.eu10.hana.ondemand.com'
    SAP_JWT_TRUST_ACL: '[{"clientid" : "*", "identityzone" : "*"}]'

  services:
    - my-xsuaa
    - service-destination

在此处输入图像描述

笔记:

  1. 保持目标名称目标实例名称相同可能会导致很多混乱。

  2. 如果您遵循第一种方法,请手动取消绑定服务目标/目标实例。从服务部分中删除条目不会自动解除绑定。


推荐阅读