如何使用 ui5-middleware-simpleproxy 摆脱“500 Internal Server Error”

How to get rid of "500 Internal Server Error" using ui5-middleware-simpleproxy

我使用 UI5 Tooling 构建了一个 SAPUI5 应用程序,但现在我无法将它连接到 OData 服务。


因为OData Service真正的url不是public,我们就叫它吧:

http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/

并在我的浏览器中打开它,在末尾添加 $metadata?sap-language=DE,有效 - 我得到了 XML 元数据文档。


这些是我尝试更改以连接到 OData 服务的文件:

  • webapp
    • manifest.json
  • package.json
  • ui5.yaml

manifest.json

中添加一个 "dataSources" 对象和一个 "models" 对象
{
  "sap.app": {
    ...
    "dataSources": {
      "oDataService": {
        "uri": "/sap/opu/odata/sap/Z_DOMAIN_SRV/",
        "type": "OData"
      }
    }
  },
  "sap.ui5": {
    ...
    "models": {
      ...
      "": {
        "dataSource": "oDataService",
        "preload": true,
        "settings": {
          "useBatch": false
        }
      }
    },
    ...
  }
}

我也尝试将 "uri" 值更改为真实的 link、http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/,但我预计会收到 Cross-Origin 错误:

所以我尝试通过将此添加到我的 package.json:

来设置代理
{
  ...
  "devDependencies": {
    "ui5-middleware-simpleproxy": "^0.5.1"
  },
  "ui5": {
    "dependencies": [
      "ui5-middleware-simpleproxy"
    ]
  },
  ...
}

并将其添加到我的 ui5.yaml 文件中:

...
server:
  customMiddleware:
    - name: ui5-middleware-simpleproxy
      mountPath: /sap/opu/odata/sap/Z_DOMAIN_SRV
      afterMiddleware: compression
      configuration:
        baseUri: "http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/"

希望现在
http://localhost:8080/sap/opu/odata/sap/Z_DOMAIN_SRV/$metadata?sap-language=DE
会变成
http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/$metadata?sap-language=DE
它会起作用,但事实并非如此 - 我只是从顶部的屏幕截图中得到错误。

知道我错过了什么吗?
我真的想让它与这个 ui5-middleware-simpleproxy 一起工作,因为我不想手动启动两台服务器(UI5 工具一台和另一台用于代理)。目前我只需要做 ui5 serve 一切都开箱即用。

更改 ui5.yaml 中的配置后,它起作用了。
我不太明白 mountPathbaseUri 之间的关系是如何工作的以及为什么会这样工作,但是有些问题可以像我的情况一样通过尝试和错误来解决 :D

...
server:
  customMiddleware:
    - name: ui5-middleware-simpleproxy
      mountPath: /sap/opu/odata/sap
      afterMiddleware: compression
      configuration:
        baseUri: "http://app99.sap.domain.com/sap/opu/odata/sap"