我要求这是为了后代,因为我花了一些时间才弄清楚这件事。
我有一个应用程序,它使用require.js和基于茉莉花的测试,通过咕噜自动实现。
我已经将模块分组到逻辑组件中,每个组件都位于app下的一个目录中。我的requirejs.config()调用为以下组件设置了路径前缀:
paths: {
/*... vendor libraries are listed here ...*/
ui: 'app/ui',
data: 'app/data',
/* etc */
}然后,我可以指定这些模块的依赖项,如下所示:
define([ 'ui/some/module', 'data/another/module' ], function(ui_module, data_module) {
/* code for module being defined goes here */
});我的应用程序工作正常,我的测试通过了基于web的运行程序,它遵循与我在应用程序中使用的结构类似的结构,它是文档正文中指向require.js的单个require.js元素,data-main设置为test/index,其中包含一个非常相似的requirejs.config()调用,只包含测试本身的附加路径,以及对window.onload()的调用,后者运行测试。
但是,当我使用grunt-contrib-jasmine时,测试会挂起,不会运行测试。我得到的信息是:
>> Error: timeout: Load timeout for modules: [list of modules, all my own application modules]
>> http://requirejs.org/docs/errors.html#timeout at
>> http:/127.0.0.1:8000/_SpecRunner.html:21
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:12 v
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:14 C
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:14 怎样才能让我的考试顺利通过?
发布于 2014-10-15 11:11:06
原来,我的requirejs.config()调用中的路径前缀应该包含一个尾随斜杠:
paths: {
/*... vendor libraries are listed here ...*/
ui: 'app/ui/',
data: 'app/data/',
/* etc */
}所以,'app/ui/'而不是'app/ui'。
我仍然不确定造成这种情况的根本原因,因为这两个版本都可以在浏览器中工作;也许这是一个不同版本的require.js正在被普通任务使用,或者它是幻影特有的。
留下这个问题和答案,这样可以节省一些时间。
https://stackoverflow.com/questions/26381030
复制相似问题