在我的项目ChuckJS中(请注意它已获得GPL许可)我在运行项目的Karma测试时尝试依赖Q时通过RequireJS遇到此问题。会发生什么是RequireJS抛出此异常:未捕获错误:匿名的define()模块不匹配。我发现在require.js的第1219行抛出异常:
if (args[0] === null) {
return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1]));
}
args [0]为空的原因是所讨论的模块(Q)是匿名的,因此没有提供名称。异常时的callstack是:
我无法单独重现这个问题;不确定为什么,但在这种情况下,Q模块定义没有从第1404行获取,因此似乎有几种方法可以在RequireJS中应用依赖项。
那么,我该如何解决这个问题,即在没有投诉的情况下通过ChuckJS中的RequireJS加载Q?
答案 0 :(得分:0)
问题在于如何通过Karma包含Q,即它实际上被有效地包含在karma.conf.js中:
files: [
'test-main.coffee',
[...]
'../node_modules/q/q.js'
],
要让RequireJS动态加载Q,karma.conf.js中的包含必须如下(注意included: false
位):
files: [
'test-main.coffee',
[...]
{pattern: '../node_modules/q/q.js', included: false}
],