在演练步骤 7:JSON 模型示例中,应用程序显然按照文档运行,但我在控制台中看到以下错误:
错误:使用匿名define()调用的模块必须通过require()调用加载;它们不能通过脚本标签执行或嵌套到其他模块中。
在我未经训练的眼睛看来,我能找到的这条消息的唯一其他实例似乎是在处理完全不同的场景。
我已经尝试过 Firefox 和 Chromium、CDN 托管与本地托管、两个不同的 UI5 版本(1.77.0 和 1.79.0),都是缩小版和普通版,所以我想这确实是代码本身的问题。
会是什么呢?另外,我可以安全地忽略它吗?为什么?
define调用匿名定义模块,因为第一个参数不是字符串(模块名称或模块 ID),而是模块依赖项的列表。如果省略模块名称,框架会根据模块脚本的引用方式自动确定它。sap.ui.define([...],...)
sap.ui.define在 JS 文件内容的顶层使用匿名一次,而不是多次。sap.ui.define。请参阅我在Issue #2203 \xc2\xb7 SAP/openui5 (github.com) 中的评论。sap.ui.requiredefine,由于框架根据模块 ID 确定模块 ID,因此会导致多次处理模块定义。不同的 ID 前缀。data-sap-ui-resourceroots* 模块 ID 前缀可以用,注册sap.ui.loader.config,或者以前用jQuery.sap.registerModulePath.
define第一个参数手动定义模块的名称,在以下情况下必须传递该名称:sap.ui.define("my/demo/Module",[...] ,...)
sap.ui.defineAPI 说明,这是禁止的:\n\n\n单个文件不得包含对
\nsap.ui.define. [...]
<script>定义由HTML 标签启动的模块。演练已相应地固定为SAP/openui5@6302b8f和 SAP/openui5-docs#43。