我有两个应用程序:
hrportalcore具有名称空间 de.example.core ,并且还维护了 dataSources 。 (manifest.json中的sap.app.dataSources
)。数据源是:
[...]
"HRPOJavaLeave": {
"uri": "<path>",
"type": "OData",
"settings": {
"annotations": [],
"odataVersion": "2.0",
"localUri": ""
}
}
[...]
可以在扩展应用程序中使用数据源而不会出现任何问题,但控制台会出现以下错误:
它说数据源包含错误,但它可以使用(奇怪吗?)。
另一件事是,Component-preload.js文件一次从错误的位置加载。该应用程序没有问题,但它 - 如上所述 - 从错误的位置加载一次?
我的hrportalrequestleave的manifest.json看起来像在扩展部分(sap.ui5.extends
):
[...]
"extends": {
"component": "de.example.core",
"extensions": {}
},
[...]
父项在 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 Launchpad
答案 0 :(得分:0)
日志中的错误
&#34;应用程序依赖项中的错误de.example.core.Component:未找到描述符&#34;
表明manifest.json包含对&#34; de.example.core.Component&#34;的依赖关系。而不是&#34; de.example.core&#34;。根据你的代码片段,&#34;扩展&#34;依赖是正确的。你有其他依赖吗?
后端的AppIndex计算依赖项的传递闭包,如果找不到具有该ID的安装,则会在客户端创建并记录上述错误。
如果您的manifest.json看起来没问题但过去可能包含了错误的依赖项,则可能需要重新运行AppIndex(或将其安排为常规运行)。
尽管配置错误,应用程序仍然可以运行,这是由您上面显示的代码引起的。它从显式计算的URL中显式加载de.example.core组件。但在该步骤之前,框架已经尝试根据manifest.json中的信息加载它,并且缺少有关显式URL的信息。
BTW:计算URL的代码表明,即使修复了manifest.json,AppIndex也可能找不到组件,因为它似乎存储在de.example.request.leave应用程序的子包中。不确定AppIndex是否可以处理它(它可以处理嵌套组件,如果它们在顶级manifest.json中列为嵌入式组件,但我不确定它是否识别依赖项部分中的此类嵌入式组件。结果它可能会尝试加载嵌入式组件,尽管它已经与封闭组件一起加载。答案 1 :(得分:0)
hrportalcore的manifest.json :始终使用您在applicationVersion
属性中的HCP上部署的最新版本:
{
"_version": "1.2.0",
"sap.app": {
"_version": "1.2.0",
"applicationVersion": {
"version": "1.6.2"
},
...
hrportalrequestleave的manifest.json (扩展项目):如上所述,始终使用您在applicationVersion
属性中的HCP上部署的最新版本。
如果您有扩展项目(如hrportalrequestleave&lt; hrportalcore),则两个应用程序的 manifest.json 将合并为jQuery.extend(...)
。所有属性都期望sap.app
树,因为它实际描述了应用程序,无法从父扩展中复制。
现在,当您使用父扩展程序中的dataSource
时,将无法找到它。这意味着,您必须在扩展项目 manifest.json 中定义sap.app.dataSources
。