Google chrome 将UI5资源升级到1.54后,在本地引导SAPUI5应用程序会引发错误
本地SAPUI5应用程序不再适用于1.54.xxx。它们与1.52.xxx配合得很好 “本地SAPUI5应用程序”指的是:Google chrome 将UI5资源升级到1.54后,在本地引导SAPUI5应用程序会引发错误,google-chrome,sapui5,local,development-environment,Google Chrome,Sapui5,Local,Development Environment,本地SAPUI5应用程序不再适用于1.54.xxx。它们与1.52.xxx配合得很好 “本地SAPUI5应用程序”指的是: 从没有http服务器的本地驱动器加载 使用CDN 在禁用SOP的情况下使用浏览器 带有--禁用web安全--用户数据目录的Chrome 该应用程序适用于1.52.xxx: src="https://openui5.hana.ondemand.com/1.52.11/resources/sap-ui-core.js" 但是从ui5loader-dbg.js和1.54.x
- 从没有http服务器的本地驱动器加载
- 使用CDN
- 在禁用SOP的情况下使用浏览器 带有--禁用web安全--用户数据目录的Chrome
src="https://openui5.hana.ondemand.com/1.52.11/resources/sap-ui-core.js"
但是从ui5loader-dbg.js和1.54.xxx中转储时出错:
src="https://openui5.hana.ondemand.com/1.54.4/resources/sap-ui-core.js"
错误发生在加载Components.js或controllers(来自两个程序的示例)期间:
ui5loader dbg.js:882未捕获错误:未能从./Component.js加载'zprog/Component.js'
ui5loader dbg.js:882未捕获错误:未能从./controller/App.controller.js加载“ztest2/controller/App.controller.js”:0-
您知道原因并知道如何使用1.54运行本地SAPUI5应用程序吗?我认为主要原因是浏览器不支持本地文件的异步XHR(
文件://
),如下所示:
如果只是从本地文件运行示例,某些浏览器(包括Chrome)将不会运行异步请求(请参阅)。这是因为安全限制(有关web安全的更多信息,请参阅)
由于UI5逐渐转向异步()以及安全原因,应避免使用文件://
协议开发应用程序。
相反,尝试设置一个本地HTTP服务器,其中有许多工具,例如。在服务器上运行应用程序还允许浏览器尊重(无需关闭web安全)
气馁的方法 尽管有协议,但依赖、忽略安全标准,并且不确定解决方案在未来是否仍然有效,如果所有请求都是异步的,您仍然可以让应用程序以1.54版运行。例如:
- 鉴于:
- Chrome的命令行标志
--禁用web安全--用户数据目录
- 或
--允许从文件访问文件
- 在同等GitHub问题上提供
- 加载
文件之前,激活隐藏的实验标志sapui core.js
xx async
窗口[“sap ui配置”]={
“xx异步”:真
}
async:true
更新(2018/05/10) 就在昨天,有一篇文章更清楚地解释了为什么升级到1.54后它就不工作了,以及为什么上面的解决方案必须到处使用异步XHR 使用1.54,引入了a。除了它带来的许多很酷的特性外,它还带走了jquery.sap.global.js中处理加载模块的大部分代码。在迁移过程中,对于使用遗留同步API的情况,必须实现对同步XHR的回退。这一点是通过以下方式实现的 在该
loadSyncXHR
函数中,当返回的XHR状态为200
时,模块被视为已加载。然而,正如新的提交建议的那样,当从文件://
协议加载文件时,包括Chrome在内的一些浏览器返回状态0
。那张支票直到昨天才找到,所以必须加上
if(xhr.status==200 | |xhr.status==0)
如果使用
src=”运行同一项目https://openui5nightly.hana.ondemand.com/...“
在不更改代码的情况下,不应再抛出错误。我编写的1.52版本工作正常(同样适用于Chrome和file://),问题发生在切换到新版本1.54之后。本地http服务器将是一个新的沉重且非常令人失望的依赖项。@AnnieW。我刚刚更新了上面的答案。如果将所有内容都设置为异步,它仍然适用于1.54。但同样,在开发UI5应用程序时,绝对不鼓励使用文件://
协议。我很难理解为什么设置本地HTTP服务器意味着对您“高度依赖”。例如,只需单击几下即可设置它。@AnnieW。这个问题现在已经解决了,我相应地更新了我的答案。仍然建议使用HTTP服务器(或localhost
或其他一些主机,如通过Web IDE)