匿名的define()模块不匹配

匿名的define()模块不匹配

当我第一次浏览我的webapp时(通常在具有禁用缓存的浏览器中),我收到此错误。

错误:匿名的define()模块不匹配:function(require){

HTML:

<html>
   .
   .
   .   <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
   <script> var require = { urlArgs: "v=0.4.1.32" }; </script>
   <script data-main="assets/js/main" src="assets/js/libs/require.js"></script>
   <script src="assets/js/ace/ace.js?v=0.4.1.32"></script>
   </body></html>

JS:

$(function () {
    define(function (require) {
        // do something
    });});

任何人都知道这个错误意味着什么以及它为什么会发生?

源文件,在github问题页面中对它进行简短讨论


慕田峪9158850
浏览 409回答 3
3回答

慕森王

我有这个错误,因为我包含了requirejs文件以及直接包含在脚本标记中的其他库。那些库(如lodash)使用了与require的define冲突的define函数。requirejs文件是异步加载的,因此我怀疑require的定义是在其他库定义之后定义的,因此存在冲突。要消除错误,请使用requirejs包含所有其他js文件。

慕村225694

根据文档:如果在HTML中手动编写脚本标记以使用匿名的define()调用加载脚本,则可能会发生此错误。还可以看到,如果您在HTML中手动编写脚本标记以加载具有一些命名模块的脚本,但随后尝试加载一个匿名模块,该模块最终与手动加载的脚本中的一个命名模块具有相同的名称编码脚本标记。最后,如果您使用加载程序插件或匿名模块(调用没有字符串ID的define()的模块)但不使用RequireJS优化器将文件组合在一起,则可能发生此错误。优化器知道如何正确命名匿名模块,以便它们可以与优化文件中的其他模块组合。为了避免错误:确保通过RequireJS API加载调用define()的所有脚本。不要在HTML中手动编写脚本标记以加载其中包含define()调用的脚本。如果手动编写HTML脚本标记代码,请确保它只包含命名模块,并且不会加载与该文件中某个模块同名的匿名模块。如果问题是使用加载程序插件或匿名模块但是RequireJS优化器不用于文件绑定,请使用RequireJS优化程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript