如何将非SAPUI5-库导入在FLP CP中运行的SAPUI5-App

2020-08-22 14:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我按照说明将非...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我按照说明将非SAPUI5库导入到SAPUI5-App中,该库旨在在SAP Cloud Platform的Fiori Launchpad中运行:

https://blogs.sap.com/2017/04/30/how-to-include-third-party-libraries-modules-in-sapui5/comment-page-1/

当我在SAP Web IDE中运行应用程序时,库已正确导入。 但是,当我将应用程序部署到SAP Cloud Platform(CP)并在FLP中运行时,什么也没有发生,也没有错误发生。 链接的博客文章的作者已在本地使用FLP成功地对其进行了测试。

首先,我认为可能是因为该库是在Component-preload.js中加载的。 但是,即使我使用git删除了已部署应用程序中的条目(您也无法在Web IDE中删除该条目,因为每次将其部署到SAP CP都是从头开始生成的),moment.js文件都已正确加载,但没有任何反应。 因此,我认为CP中的FLP正在以不同的方式进行操作。

有人知道如何将非SAPUI5-库导入在FLP CP中运行的SAPUI5-App吗?

在这里您可以下载我的最小应用进行测试。

最诚挚的问候,

基督徒。

4条回答
小熊yu生菜
2020-08-22 15:14 .采纳回答
大家好,

SAP支持人员给了我一个答案,为什么会出现这种现象以及如何解决它:

"出现问题,当使用require,js并加载遵循统一模块定义(UMD)模式的脚本时。在UMD中,模块检查可用的加载器类型,例如AMD,CommonJS和 使用找到的第一个加载器的导出机制,当没有找到加载器时,将导出到全局变量(窗口属性),当只有一个加载器但有两个加载器(例如ui5loader和requirejs)时,该机制可以正常工作 ,通过一个加载程序导出会阻止全局范围内的可见性。

这就是您的应用程序所发生的一切:某个库(根据我们的分析,它是sap.viz图表库),引入了require.js,当ui5loader为您的应用程序加载了moment.js时,它将检测到 require.js,向其注册,因此不再导出到全局。"

自SAPUI5 1.56起,有一个官方解决方案, sa p.ui.loader.config 。 在以前的版本中,您可以使用内部API。 但是目前,这种方法尚未由SAP正式提出。

我将此代码放在Component.js的第一行:

 jQuery.myUniqueNamespace = {
 registerExternalLib:function(oShim){
 如果(sap.ui.loader && sap.ui.loader.config){
//从1.56开始的官方API
 sap.ui.loader.config({
 垫片:oShim
 });
 }其他{
//1.56之前的内部API
 jQuery.sap.registerModuleShims(oShim);
 }
 }
 };
 jQuery.myUniqueNamespace.registerExternalLib({
 " nxpcm/sample/ExtLibWithinFLP/libs/moment":{
 " amd":是的,
 "出口":"时刻"
 }
 });
 

然后加载voila moment.js。

SAP支持说:

""在足够早(在需要moment.js之前)使用此调用(sap.ui.loader.config,由我自己添加)时,加载器将知道如何加载它,甚至会提供导出作为参数给 sap.ui.define回调函数(我想这对您来说目前不起作用)。" 

我没有让它运行。 我的矩参数仍然不确定。

在我看来,不可能在manifest.json中导入外部文件。 我们必须使用sap.ui.define。

最诚挚的问候,

基督徒。

P.S。 抱歉,我无法删除格式错误的代码节。

一周热门 更多>