0

目前我正在为 intern.js 定制 html 记者。我使用的模板引擎是 marko.js。marko.js 有带有“.marko”的扩展文件供我输入我的 html 语法该文件在普通 node.js (common.js) 中正确生成

当我将相同的代码集成到 intern.js 时出现问题。当我这样做时,internjs 使用的 requirejs(AMD) 会自动将 .js 文件扩展名添加到我的 marko 扩展名中

var template = require('./hello-world.marko');

这使文件成为hello-world.marko.js,这导致markojs中的代码中断

自定义 html 报告器代码如下

define(function (require) {

    // require('intern/dojo/node!marko/node-require').install();
    var fs = require('intern/dojo/node!fs');

    var template = require('./hello-world.marko');
    console.log(template);
    function JsonReporter(config) {
        config = config || {};
        this.output = config.output;
    }

    JsonReporter.prototype = {
        runEnd(executor) {
            // console.log("toJson: " + JSON.stringify(executor.suites))
            data = JSON.stringify(executor.suites);
            template.renderToString(data,
                function (err, output) {
                    console.log(output);
                    fs.writeFile('result.html', output, function (err) {
                        if (err) return console.log(err);
                        console.log('Save done');
                    });
                });
        },
    }
    return JsonReporter;

})
4

1 回答 1

0

require函数并不真正用于在 Node 的加载器或 AMD 加载器中加载任意文本资源。在 Node 中,无论您是否在运行 Intern,您都可以使用fs.readFilefs.readFileSync. 在 Intern 的基于 Dojo 的 AMD 环境中,您还可以使用dojo/textloader 插件,如下所示:

var template = require('dojo/text!./hello-world.marko');
于 2017-01-08T17:36:07.903 回答