当我第一次浏览我的webapp时(通常是在禁用缓存的浏览器中),我得到了这个错误。
错误:匿名定义()模块不匹配: 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
});
});
有人知道这个错误的确切含义和发生的原因吗?
source file,github问题页面中关于它的short discussion
发布于 2014-05-05 15:28:52
就像AlienWebguy说的,根据文档,require.js can blow up if
()的模块没有字符串ID") (我假设它们实际上指的是全局范围内的任何地方)
.js的优化器将它们捆绑在一起
在包含使用browserify和require.js模块构建的包时,我遇到了这个问题。解决方案是:
A.在加载require.js之前,将不需要的.js独立包加载到脚本标记中,或者
B.使用require.js (而不是脚本标记)加载它们
发布于 2016-10-14 08:59:26
在开始使用require.js时,我遇到了这个问题,作为一个初学者,docs可能也是用希腊语编写的。
我遇到的问题是,大多数初学者示例使用“匿名定义”,而您应该使用“字符串id”。
匿名定义
define(function() {
return { helloWorld: function() { console.log('hello world!') } };
})
define(function() {
return { helloWorld2: function() { console.log('hello world again!') } };
})
使用字符串id定义
define('moduleOne',function() {
return { helloWorld: function() { console.log('hello world!') } };
})
define('moduleTwo', function() {
return { helloWorld2: function() { console.log('hello world again!') } };
})
当你使用带有字符串id的定义时,当你尝试像这样使用模块时,你将会避免这个错误:
require([ "moduleOne", "moduleTwo" ], function(moduleOne, moduleTwo) {
moduleOne.helloWorld();
moduleTwo.helloWorld2();
});
发布于 2014-08-12 05:58:20
我之所以出现这个错误,是因为我在脚本标记中直接包含requirejs文件和其他库。这些库(如lodash)使用的定义函数与require的定义冲突。requirejs文件是异步加载的,所以我怀疑require的定义是在其他库定义之后定义的,因此出现了冲突。
要消除此错误,请使用requirejs将所有其他js文件包含在内。
https://stackoverflow.com/questions/15371918
复制相似问题