我的项目结构是这样的:Karma如何通过id加载模块?
├── src
| ├── js
| └── a.js
├── test
| ├── spec
| └── test_a.js
我a.js
看起来是这样的:
define('A/B/C', function(){
var D = ...
return D;
})
在我karma.conf.js
,我有包括frameworks
requirejs
,和所需文件包括以下几个方面:
files: [
{pattern: 'src/js/*.js', included: false},
{pattern: 'test/spec/*.js', included: false},
'test/test-bootstrap.js'
]
而我的test_a.js
看起来像:
define(['A/B/C'], function(D){
//test case
})
但浏览器的外观为localhost:9876/base/A/B/C.js
因为只有localhost:9876/base/src/js/a.js
在浏览器中存在返回一个错误。
我的问题是,既然src/js/a.js
已经加载了,我在karma.conf.js
中引入了requirejs
,为什么模块不能加载它的id呢?我以错误的方式编写了A/B/C
模块吗?
我require.config
在test/test-bootstrap.js
是:
require.config({
// Karma serves files under /base, which is the basePath from your config file
baseUrl: 'http://localhost:9876/base',
paths: {
'jquery': 'test/lib/jquery-1.12.0.min'
},
// dynamically load all test files
deps: allTestFiles,
// we have to kickoff jasmine, as it is asynchronous
callback: window.__karma__.start
});
我需要通过其ID加载模块,因为我可以改变我的项目结构,我不想要的模块路径是硬编码到测试文件。
谢谢您的回答,实际上我有'test/test-bootstrap.js',它的功能与你的'test-main.js'相同。但在我看来,如果我给一个模块一个ID,我可以直接使用它,而无需为它配置路径。我错了吗? – JasmineOT
如果您正在演示,RequireJS无法找到您的模块,而无需在配置中指定它。 – Louis
是的,我添加路径后,它的作品。我想我应该读更多关于'requirejs'。 – JasmineOT