Javascript 因果报应下无法通过requirejs依赖Q
在我的项目中(请注意它是GPL许可的),当我试图依赖via时,当运行项目的Karma测试时,我遇到了这个问题。发生的情况是,RequireJS抛出以下异常:未捕获错误:不匹配的匿名define()模块。我发现在require.js的第1219行抛出了异常:Javascript 因果报应下无法通过requirejs依赖Q,javascript,debugging,requirejs,karma-runner,q,Javascript,Debugging,Requirejs,Karma Runner,Q,在我的项目中(请注意它是GPL许可的),当我试图依赖via时,当运行项目的Karma测试时,我遇到了这个问题。发生的情况是,RequireJS抛出以下异常:未捕获错误:不匹配的匿名define()模块。我发现在require.js的第1219行抛出了异常: if (args[0] === null) { return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.len
if (args[0] === null) {
return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1]));
}
args[0]为null的原因是所讨论的模块(Q)是匿名的,因此没有提供名称。发生异常时的调用堆栈为:
- require.js第1219行
- require.js第1404行
那么,我如何解决这个问题,即通过ChuckJS中的RequireJS加载Q而不产生任何抱怨?问题在于Q是如何通过Karma包含的,也就是说,它有效地静态包含在Karma.conf.js中:
files: [
'test-main.coffee',
[...]
'../node_modules/q/q.js'
],
为了让RequireJS动态加载Q,karma.conf.js中的包含必须如下所示(注意include:false
bit):
你有没有按照文件末尾的清单去做?@Louis Argh,我真是个傻瓜。我已经指示Karma(通过Karma.conf.js)以静态方式有效地加载q.js(尽管这不是我的意图)。谢谢,圣诞快乐!
files: [
'test-main.coffee',
[...]
{pattern: '../node_modules/q/q.js', included: false}
],