在Karma下无法依赖Q通过requirejs

时间:2013-12-24 14:39:22

标签: javascript debugging requirejs karma-runner q

在我的项目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是:

  • require.js第1219行
  • require.js第1404行

我无法单独重现这个问题;不确定为什么,但在这种情况下,Q模块定义没有从第1404行获取,因此似乎有几种方法可以在RequireJS中应用依赖项。

那么,我该如何解决这个问题,即在没有投诉的情况下通过ChuckJS中的RequireJS加载Q?

1 个答案:

答案 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}
],