我们为Fiori提供以下发展环境:
网关7.4
后端:Sap Netweaver 7.4 SP15
猎户座版本160811的本地Web IDE
我们没有HCP,我们的网关在我们的网络中是本地的,我们也没有Web调度程序或Sap Router,这意味着我们不能直接从Web IDE部署,而是我们必须手动将文件夹上传到Gateway。
我们在Web IDE中从头创建了一个应用程序并将其导出为zip,以便在启动板中进行部署。 在这种情况下一切顺利,我们将应用程序添加到rol或使用独立URL来测试它是否正常工作。
问题是当我们从Web IDE制作Fiori工作列表模板应用程序,然后尝试以与其他应用程序相同的方式部署它。
当我们运行应用程序的独立URL时,我们会收到以下javascript错误:
Uncaught TypeError: Cannot read property 'createRenderer' of undefined.
我们的flpSandbox.html如下(没有html标签):
<script>
window["sap-ushell-config"] = {
defaultRenderer : "fiori2",
renderers: {
fiori2: {
componentData: {
config: {
search: "hidden"
}
}
}
},
applications: {
"Notastest1-display": {
additionalInformation: "SAPUI5.Component=appnotatest",
applicationType: "URL",
url: "../",
description: "Despliegue de Notas Alumnos.",
title: "Calificaciones Mobile"
}
}
};
</script>
<script src="../test-resources/sap/ushell/bootstrap/sandbox.js" id="sap-ushell-bootstrap"></script>
<!-- Bootstrap the UI5 core library -->
<script id="sap-ui-bootstrap"
src="../resources/sap-ui-core.js"
data-sap-ui-libs="sap.ushell, sap.collaboration"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"appnotatest": "../"}'
data-sap-ui-frameOptions='allow'> // NON-SECURE setting for testing environment
</script>
<script>
sap.ui.getCore().attachInit(function() {
// initialize the ushell sandbox component
sap.ushell.Container.createRenderer().placeAt("content");
});
</script>
我们的宣言:
{
"_version": "1.3.0",
"sap.app": {
"_version": "1.3.0",
"id": "appnotatest",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"applicationVersion": {
"version": "1.0.0"
},
"dataSources": {
"mainService": {
"uri": "/sap/opu/odata/sap/ZNOTAS3_SRV/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/metadata.xml"
}
}
},
"sourceTemplate": {
"id": "sap.ui.ui5-template-plugin.1worklist",
"version": "1.36.2"
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"icons": {
"icon": "sap-icon://task",
"favIcon": "",
"phone": "",
"phone@2": "",
"tablet": "",
"tablet@2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_hcb",
"sap_bluecrystal"
]
},
"sap.ui5": {
"_version": "1.3.0",
"rootView": {
"viewName": "appnotatest.view.App",
"type": "XML",
"id": "app"
},
"dependencies": {
"minUI5Version": "1.36.0",
"libs": {
"sap.ui.core": {
"minVersion": "1.36.0"
},
"sap.m": {
"minVersion": "1.36.0"
},
"sap.ushell": {
"minVersion": "1.36.0"
},
"sap.collaboration": {
"minVersion": "1.36",
"lazy": true
}
}
},
"resources": {
"css": [
{
"uri": "css/style.css"
}
]
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "appnotatest.i18n.i18n"
}
},
"": {
"dataSource": "mainService",
"settings": {
"metadataUrlParams": {
"sap-documentation": "heading"
}
}
}
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "appnotatest.view",
"controlId": "app",
"controlAggregation": "pages",
"bypassed": {
"target": [
"notFound"
]
},
"async": true
},
"routes": [
{
"pattern": "",
"name": "worklist",
"target": [
"worklist"
]
},
{
"pattern": "EntityAsignaturasSet/{objectId}",
"name": "object",
"target": [
"object"
]
}
],
"targets": {
"worklist": {
"viewName": "Worklist",
"viewId": "worklist",
"viewLevel": 1
},
"object": {
"viewName": "Object",
"viewId": "object",
"viewLevel": 2
},
"objectNotFound": {
"viewName": "ObjectNotFound",
"viewId": "objectNotFound"
},
"notFound": {
"viewName": "NotFound",
"viewId": "notFound"
}
}
}
}
}
最后但并非最不重要的是这是我们的component.js:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"appnotatest/model/models",
"appnotatest/controller/ErrorHandler"
], function (UIComponent, Device, models, ErrorHandler) {
"use strict";
return UIComponent.extend("appnotatest.Component", {
metadata : {
manifest: "json"
},
/**
* The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
* In this function, the FLP and device models are set and the router is initialized.
* @public
* @override
*/
init : function () {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// initialize the error handler with the component
this._oErrorHandler = new ErrorHandler(this);
// set the device model
this.setModel(models.createDeviceModel(), "device");
// set the FLP model
this.setModel(models.createFLPModel(), "FLP");
// create the views based on the url/hash
this.getRouter().initialize();
},
/**
* The component is destroyed by UI5 automatically.
* In this method, the ErrorHandler is destroyed.
* @public
* @override
*/
destroy : function () {
this._oErrorHandler.destroy();
// call the base component's destroy function
UIComponent.prototype.destroy.apply(this, arguments);
},
/**
* This method can be called to determine whether the sapUiSizeCompact or sapUiSizeCozy
* design mode class should be set, which influences the size appearance of some controls.
* @public
* @return {string} css class, either 'sapUiSizeCompact' or 'sapUiSizeCozy' - or an empty string if no css class should be set
*/
getContentDensityClass : function() {
/*if (this._sContentDensityClass === undefined) {
// check whether FLP has already set the content density class; do nothing in this case
if (jQuery(document.body).hasClass("sapUiSizeCozy") || jQuery(document.body).hasClass("sapUiSizeCompact")) {
this._sContentDensityClass = "";
} else if (!Device.support.touch) { // apply "compact" mode if touch is not supported
this._sContentDensityClass = "sapUiSizeCompact";
} else {
// "cozy" in case of touch support; default for most sap.m controls, but needed for desktop-first controls like sap.ui.table.Table
this._sContentDensityClass = "sapUiSizeCozy";
}
}
return this._sContentDensityClass;*/
}
});
}
);
我们尝试创建另一个index.html来解决创建渲染,我们解决了错误,但应用程序仍然不起作用,它只显示没有磁贴的启动板。请记住,当我们从本地Web IDE测试应用程序时,首先它会打开一个带有应用程序磁贴的启动板。
非常感谢你的帮助。
答案 0 :(得分:1)
这可能是与Netweaver系统上的UI5版本相关的问题。要测试此理论,请在Web IDE中使用Netweaver系统上的相同UI5版本运行应用程序,以查看是否发生相同的错误。
要实现这一点,请在Web IDE中右键单击您的项目 - &gt;运行 - &gt;运行配置... - &gt;选择现有的运行配置或添加新的运行配置 - &gt;高级设置标签 - &gt;将ui5版本更改为Netweaver系统上运行的版本 - &gt;保存并运行。
如果您遇到同样的问题,可能需要在Netweaver系统上更新UI5版本,或尝试在UI5应用中针对此问题构建解决方法。