Sapui5 扩展应用程序描述符文件和无效数据源

Sapui5 扩展应用程序描述符文件和无效数据源,sapui5,sap-fiori,sap-cloud-platform,Sapui5,Sap Fiori,Sap Cloud Platform,我有两份申请: hrportalcore:带BaseController的核心应用程序 hrportalrequestleave:从hrportalcore应用程序扩展而来的示例应用程序 hrportalcore具有名称空间de.example.core,并且还维护了数据源。(manifest.json中的sap.app.dataSources)。数据源是: [...] "HRPOJavaLeave": { "uri": "<path>", "type": "ODat

我有两份申请:

  • hrportalcore:带BaseController的核心应用程序
  • hrportalrequestleave:从hrportalcore应用程序扩展而来的示例应用程序
hrportalcore具有名称空间de.example.core,并且还维护了数据源。(
manifest.json中的sap.app.dataSources
)。数据源是:

[...]
"HRPOJavaLeave": {
   "uri": "<path>",
   "type": "OData",
   "settings": {
       "annotations": [],
       "odataVersion": "2.0",
       "localUri": ""
   }
}
[...]
在neo-app.json中正确地将父级定义为
/parent
,以显示给hrportalcore

jQuery.sap.declare("de.example.request.leave.Component");

// use the load function for getting the optimized preload file if present
if (!jQuery.sap.isDeclared("de.example.core.Component")) {
    sap.ui.component.load({
        name: "de.example.core",
        // Use the below URL to run the extended application when SAP-delivered application is deployed on cloud
        url: jQuery.sap.getModulePath("de.example.request.leave") + "/parent"
            // we use a URL relative to our own component
            // extension application is deployed with customer namespace
    });
}

this.de.example.core.Component.extend("de.example.request.leave.Component", {
    metadata: {
        manifest: "json"
    }
});
这一切都发生在HANA云平台的Fiori启动板上

日志中的错误

“应用程序依赖项de.example.core.Component中出错:未找到描述符”

建议manifest.json包含对“de.example.core.Component”的依赖项,而不是“de.example.core”。根据您的代码片段,“扩展”依赖项是正确的。您有其他依赖项吗

后端中的AppIndex计算依赖项的可传递闭包,如果找不到具有该ID的安装,则会在客户端创建并记录上述错误

如果manifest.json看起来不错,但在过去可能包含错误的依赖项,那么可能需要重新运行AppIndex(或将其安排为常规运行)

尽管存在配置错误,但应用程序仍能正常工作,这是由上面显示的代码引起的。它从显式计算的URL显式加载de.example.core组件。但是在这一步之前,框架已经基于manifest.json中的信息尝试加载它,并且那里缺少关于显式URL的信息

顺便说一句:计算URL的代码表明,即使在修复manifest.json之后,AppIndex也可能找不到该组件,因为它似乎存储在de.example.request.leave应用程序的子包中。不确定AppIndex是否可以处理此问题(如果嵌套组件在顶层manifest.json中被列为嵌入式组件,它可以处理这些嵌套组件,但我不确定它是否能够识别依赖项部分中的此类嵌入式组件。因此,它可能会尝试加载嵌入式组件,尽管它已与封闭组件一起加载。

解决方案 hrportalcore的manifest.json:始终在
applicationVersion
属性中使用您在HCP上部署的最新版本:

{
    "_version": "1.2.0",
    "sap.app": {
        "_version": "1.2.0",
        "applicationVersion": {
            "version": "1.6.2"
        },
...
hrportalrequestleave(扩展项目)的manifest.json

找不到数据源?! 如果您有一个扩展项目(如hrportalrequestleave一样合并。所有属性,除了
sap.app
树之外,因为它确实描述了应用程序,并且不能从父扩展复制


现在,当您使用父扩展中的
数据源时,将找不到它。这意味着您必须在扩展项目manifest.json中定义
sap.app.dataSources

只是为了澄清一下:应用程序本身工作没有问题,并且正确显示您的数据?您的问题只是指这些控制台日志中的错误消息?是的,应用程序正常工作,控制台日志正常。感谢您的回复。不,我没有其他依赖项。您有扩展manifest.json的示例吗?
{
    "_version": "1.2.0",
    "sap.app": {
        "_version": "1.2.0",
        "applicationVersion": {
            "version": "1.6.2"
        },
...