从错误的路径加载library.js

时间:2019-05-03 14:06:57

标签: sapui5 directory-structure

我已将项目的OpenUI5从1.42.7更新为1.60.12(LTS)

如果我尝试使用新版本运行该应用程序,则出现此错误:

  

未捕获的错误:无法从资源/sap/ui/core/library.js加载“ sap / ui / core / library.js”:404-未找到**

error

我的项目的树形结构在resources/openui路径中包含OpenUI5文件:

current project folder structure

在index.html中,我将src设置为此模式:

<script id="sap-ui-bootstrap"
  src="resources/openui/sap-ui-core.js"
  data-sap-ui-theme="sap_belize"
  data-sap-ui-xx-bindingSyntax="complex"
  data-sap-ui-libs="sap.m"
  data-sap-ui-preload=""
  data-sap-ui-resourceroots='{
    "ui5bp": "./",
    "model": "./model"
  }'
></script>

似乎sap-ui-core.js的第一个调用正确完成了(来自Webcontent/resources/openui),但是随后library.js的调用是由Webcontent/resources/而不是Webcontent/resources/openui调用的}。

在1.42版本中,一切正常。
注意:如果我尝试从CDN检索OpenUI5资源,则一切正常...

src="https://openui5.hana.ondemand.com/1.60.12/resources/sap-ui-core.js"

1 个答案:

答案 0 :(得分:3)

选项1(推荐)

将UI5资源移动到正下方的resources文件夹中。

˅ resources
  ˃ openui
  ˅ sap
    ˃ base
    ˃ f
    ˃ m
    ...
  ...
  sap-ui-core.js

根据主题 Bootstrapping: Loading and Initializing - Initialization Process ,UI5默认会尝试从以下路径获取库资源:

  

库引导文件/<context-path>/resources/<library-name>/library(-preload).js

路径(在/resources/openui/<library-name>/之间存在偏差)使得获取库文件与默认设置不兼容。

选项2(不更改文件夹结构)

尽早在index.html中定义一个新的默认基本URL 。例如。通过 global configuration object

<script>
  window["sap-ui-config"] = {
    resourceRoots: {
      "": "./resources/openui/", // <-- new base URL
      "ui5bp": "./",
      // ...
    },
    libs: "sap.ui.core, sap.m",
    async: true,
    theme: "sap_belize",
    compatVersion: "edge",
    // ...
  };
</script>
<script id="sap-ui-bootstrap" src="resources/openui/sap-ui-core.js"></script>

这也可以解决,""始终可以作为后备

  

请注意,空前缀("")将始终匹配,因此可作为任何搜索的后备。 source