为什么我在尝试渲染doT.js视图时遇到错误:ENOENT打开错误

时间:2014-12-01 00:26:44

标签: javascript node.js express dot.js express-4

我是第一次尝试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');

当我运行服务器并转到myaddress时:8080我收到以下错误:     错误:ENOENT,打开'/home/myproject/views/layout.html'

如果我尝试使用res.sendFile调用index.html它可以工作(虽然我当然不能以这种方式传递变量)

res.sendFile(vws + '/index.html')

我哪里错了? 为什么我得到的错误似乎与打开“layout.html”失败的尝试有关,当我没有看到提到这样的文件的例子时?

我需要使用res.render将变量传递给模板,但我发现的所有示例都是按照我第一次尝试的方式进行的。

1 个答案:

答案 0 :(得分:0)

dot.js尚未与express 4.0的视图引擎中间件钩子集成。

Swig是一个类似的应用程序。它没有dot.js那么快,但对我而言,它在速度和功能方面具有很好的平衡,并且具有非常直观的语法。

完全披露:我喜欢swig。