我正在尝试在实习生/ lib / reporter位置之外写一个自定义记者,并且不明白自定义记者的绝对中期应该是什么样子。 e.g。
在/var/www/tmp/intern-tutorial/intern-tutorial/tests/intern.js上测试配置
reporters : ["/var/www/tmp/intern-tutorial/customreporters/bugreporter"]
或
reporters : ["../customreporters/bugreporter"]
和bugreporter模块:
define([
'dojo/node!istanbul/lib/collector',
'dojo/node!istanbul/lib/report/cobertura',
], function (Collector, Reporter) {
var collector = new Collector(),
reporter = new Reporter();
return {
'/coverage': function (sessionId, coverage) {
//debugger;
console.log("heeeere 1");
collector.add(coverage);
},
'/runner/end': function () {
//debugger;
console.log("heeeere 2");
reporter.writeReport(collector, true);
}
};
});
使用此配置我收到错误:
Error: Failed to load module dojo/node from /var/www/tmp/intern-tutorial/dojo/node.js (parent: dojo/node!17!*)
at injectUrl (/var/www/tmp/intern-tutorial/node_modules/intern/node_modules/dojo/dojo.js:743:12)
答案 0 :(得分:0)
绝对模块ID是不包含..
或.
部分的模块ID,是模块ID。您的第一个示例是路径,而不是模块ID。您的第二个示例是相对模块ID,而不是绝对模块ID。如果您的baseUrl
为/var/www/tmp/intern-tutorial
,则您的正确绝对模块ID为customreporters/bugreporter
。
所有这一切,您遇到的错误是因为您尝试从不存在的dojo
目录加载模块。实习生不会将其内部副本Dojo公开为dojo
,除非使用map。如果您正在测试的软件使用Dojo,则需要您自己的副本。如果您尝试使用Intern的Dojo副本,则需要自己映射或引用规范模块ID(intern/node_modules/dojo
)。