Измените 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');