0

我正在尝试在 intern/lib/reporters 位置之外编写自定义记者,但不明白自定义记者的绝对中间值应该是什么样子。例如

在 /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)
4

1 回答 1

0

绝对模块ID是不包含...部分的模块ID,是模块ID。您的第一个示例是路径,而不是模块 ID。您的第二个示例是相对模块 ID,而不是绝对模块 ID。如果你baseUrl/var/www/tmp/intern-tutorial,你正确的绝对模块 ID 是customreporters/bugreporter

综上所述,您遇到的错误是因为您试图dojo从不存在的目录加载模块。Intern 不会dojo使用map向自己公开其 Dojo 的内部副本。如果您正在测试的软件使用 Dojo,您需要自己的副本。如果您尝试使用 Intern 的 Dojo 副本,您需要自己映射它或引用规范模块 ID ( intern/node_modules/dojo)。

于 2013-07-29T20:02:51.037 回答