我在VisualStudio解决方案中使用 karma.js 与 require.js 一起使用。我的解决方案有两个项目,一个用于代码,另一个用于测试。
如果我引用位于Test.Project中的库:
,以下需要配置对我来说很好requirejs.config({
baseUrl: '/base',
paths: {
'jquery': 'bower_components2/jquery/dist/jquery'
},
deps: tests,
callback: window.__karma__.start
});
以下是我文件夹结构的一部分:
- Solution
+ Code.Project
* App
* bower_components1
+ Test.Project
* App
* bower_components2
* karma.conf.js
我想从Code.Project 引用jquery而不是 Test.Project :
requirejs.config({
baseUrl: '/base',
paths: {
'jquery': '../Code.Project/bower_components1/jquery/dist/jquery'
},
deps: tests,
callback: window.__karma__.start
});
然而,这不起作用。无法找到Jquery,我收到以下错误:
Uncaught Error: Script error for "jquery", needed by: App/app.spec.js
http://requirejs.org/docs/errors.html#scripterror
at node_modules/requirejs/require.js:143
=>是否有限制不允许我从 / base 向上移动?我应该使用不同的baseUrl(我试过/和./,但没有让它工作)?或者我的相对路径有些错误吗?
(以下是关于如何使用带有业力的requirejs作为起点的完整示例:https://github.com/kjbekkelund/karma-requirejs)
答案 0 :(得分:0)
我刚刚找到一个相关的答案(见下文)。
将karma.conf.js直接放在Solution文件夹中而不是在测试项目中也可能更有意义。然后我可以直接进入"业力开始"在控制台中。 (NuGet包管理器控制台/ PowerShell的默认路径是解决方案文件夹。)
来自Karma and RequireJS getting files outside base url
正如你自己写的那样
// Karma提供/ base下的文件,这是配置文件中的basePath baseUrl:' ../ 39;,
因此,这意味着如果您希望能够访问比您需要移动所有网址更深的文件:
baseUrl:' ../.. 39;,
你也可以使用base /将karma理解为你的karmaConf.js的基本路径
为了更好地理解karma.conf和test-main.js的basePath如何工作,你可以看一下:http://monicalent.com/blog/2015/02/11/karma-tests-angular-js-require-j/