Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 将UI5资源升级到1.54后,在本地引导SAPUI5应用程序会引发错误_Google Chrome_Sapui5_Local_Development Environment - Fatal编程技术网

Google chrome 将UI5资源升级到1.54后,在本地引导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

本地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.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)