Измените requireJS, добавив расширение файла.js автоматически в intern.js

В настоящее время я работаю в настраиваемом репортере HTML для intern.js. Я использую шаблонизатор marko.js. У marko.js есть файл расширения с ".marko", чтобы я мог ввести свой синтаксис html. Файл сгенерирован правильно в обычном node.js (common.js)

Проблема возникла, когда я интегрировал тот же код в intern.js. Requjs(AMD), который использует internjs, автоматически добавляет расширение.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;

})

1 ответ

require Функция не предназначена для загрузки произвольных текстовых ресурсов ни в загрузчик Node, ни в загрузчик AMD. В Node, независимо от того, работаете вы в Intern или нет, вы можете использовать fs.readFile или же fs.readFileSync, В среде AMD Intern на основе Dojo вы также можете использовать dojo/text плагин загрузчика, вот так:

var template = require('dojo/text!./hello-world.marko');
Другие вопросы по тегам