Я работаю над API HapiJS, и я определил плагин, который регистрирует плагин Vision и настраивает механизм рендеринга (ejs).Но когда я пытаюсь ответить на запрос, отображая представление, я получаю сообщение об ошибке
AssertionError [ERR_ASSERTION]: Менеджер отсутствующих представлений
Если я регистрирую плагин Vision иего конфигурация где-то вне плагина, тесты проходят, но я ожидаю, что я смогу заключить эту логику в плагин.
// plugin
const ejs = require('ejs');
const Vision = require('vision');
module.exports = {
name: 'views',
version: '0.0.1',
register: async (server, { path }) => {
await server.register(Vision);
server.views({
engines: { ejs },
path,
});
},
};
Код обработчика
// api
server.route({
path: '/korin/songs',
method: 'GET',
handler: async (request, h) => {
try {
const acceptType = getMediaType(request.headers.accept);
const data = await server.methods.getTopTracks({
getTopTracks,
lastfmApi,
});
if (acceptType === 'text/html') {
return h.view('index'); // <-- this errors
}
return data;
} catch (error) {
console.warn(error);
}
},
});
Ошибкагенерируется ошибочным тестом
suite('render content', () => {
test.only(`given text/html page should respond with header and footer`, async () => {
const { server } = await setup();
const { payload } = await server.inject({
method: 'GET',
url: '/korin/songs',
headers: {
accept: 'text/html',
},
});
expect(payload).to.contain(`<header>`);
expect(payload).to.contain(`<footer>`);
});
});
// test setup
const setup = async options => {
const server = new Hapi.Server();
// truncated for brevity
await server.register({
plugin: require('../../server/api'),
options: {
...defaults,
...options,
},
});
await server.register({
plugin: require('../../server/views'),
options: { path: path.join(__dirname, '../views/templates') },
});
return {
server
};
};
Что-то я пропускаю?Я попытался запустить console.log, и кажется, что код работает в правильном порядке, но все равно не работает.