“使用匿名 Define() 调用的模块必须通过 require() 调用加载”

And*_*gia 5 amd sapui5

演练步骤 7:JSON 模型示例中,应用程序显然按照文档运行,但我在控制台中看到以下错误:

错误:使用匿名define()调用的模块必须通过require()调用加载;它们不能通过脚本标签执行或嵌套到其他模块中。

在我未经训练的眼睛看来,我能找到的这条消息的唯一其他实例似乎是在处理完全不同的场景

我已经尝试过 Firefox 和 Chromium、CDN 托管与本地托管、两个不同的 UI5 版本(1.77.0 和 1.79.0),都是缩小版和普通版,所以我想这确实是代码本身的问题

会是什么呢?另外,我可以安全地忽略它吗?为什么?

Bog*_*ann 4

匿名的define

\n

调用匿名定义模块,因为第一个参数不是字符串(模块名称模块 ID),而是模块依赖项的列表。如果省略模块名称,框架会根据模块脚本的引用方式自动确定它。sap.ui.define([...],...)

\n
    \n
  • sap.ui.define在 JS 文件内容的顶层使用匿名一次,而不是多次。
  • \n
  • 仅需要现有模块时替换为sap.ui.define请参阅我在Issue #2203 \xc2\xb7 SAP/openui5 (github.com) 中的评论。sap.ui.require
  • \n
  • 始终一致地对具有相同注册模块 ID 前缀的模块进行寻址。* 这可以避免用不同的模块 ID 冗余注册同一模块,否则在匿名场景中define,由于框架根据模块 ID 确定模块 ID,因此会导致多次处理模块定义。不同的 ID 前缀。
  • \n
\n

data-sap-ui-resourceroots* 模块 ID 前缀可以用,注册sap.ui.loader.config,或者以前用jQuery.sap.registerModulePath.

\n

命名模块define

\n

第一个参数手动定义模块的名称,在以下情况下必须传递该名称:sap.ui.define("my/demo/Module",[...] ,...)

\n
    \n
  • 在单个 JS 文件内容中的现有模块定义中定义嵌套模块,但是根据sap.ui.defineAPI 说明,这是禁止的:\n
    \n

    单个文件不得包含对sap.ui.define. [...]

    \n
    \n
  • \n
  • <script>定义由HTML 标签启动的模块。
  • \n
\n

演练已相应地固定为SAP/openui5@6302b8fSAP/openui5-docs#43

\n