Почему я получаю сообщение об ошибке: ENOENT open error при попытке отобразить представление doT.js
Я пробую doT.js впервые и написал очень простую настройку сервера:
'use strict';
var express = require('express');
var app = express();
var doT = require('express-dot');
var pub = __dirname+'/public';
var vws = __dirname+'/views';
app.set('views', vws);
app.set('view engine', 'dot');
app.engine('html', doT.__express);
app.use('/css',express.static(pub + '/css'));
app.use('/img',express.static(pub + '/imgs'));
app.use('/js',express.static(pub + '/js'));
app.get('/', function(req, res){
res.render(vws + '/index.html', { title: 'dynamic title' });
});
app.listen(8080);
console.log('Server running on port 8080');
Когда я запускаю сервер и перехожу на мой адрес:8080, я получаю следующую ошибку: Ошибка: ENOENT, откройте /home/myproject/views/layout.html.
Если я пытаюсь вызвать index.html с помощью res.sendFile, это сработает (хотя, конечно, я не могу передать переменные таким образом)
res.sendFile(vws + '/index.html')
Куда я иду не так? Почему я получаю сообщение об ошибке, которое, по-видимому, связано с неудачной попыткой открыть файл layout.html, когда ни в одном из примеров, которые я видел, не упоминается такой файл?
Мне нужно использовать res.render для передачи переменных в шаблон, но все примеры, которые я нашел, делают это так же, как я пытался в первой попытке.
1 ответ
dot.js еще не интегрирован с промежуточным программным обеспечением Express для движка представления 4.0.
Swig - это похожее приложение. Это не так быстро, как dot.js, но для меня это отличный баланс скорости и возможностей с чрезвычайно интуитивным синтаксисом.
Полное раскрытие: я люблю глоток.