我的項目結構是這樣的: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