【问题标题】:why do I get Error: ENOENT open error when trying to render a doT.js view为什么在尝试渲染 doT.js 视图时出现错误:ENOENT 打开错误
【发布时间】:2014-12-03 03:35:34
【问题描述】:

我是第一次尝试 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 将变量传递给模板,但我发现的所有示例都按照我第一次尝试的方式进行。

【问题讨论】:

  • 我不认为 dot 有 express 模块,除非它是最近添加的?
  • @MatthewJamesDavis 看起来你适合 express 4。检查了 express-dot 的 npm 包数据,它确实说 3.x。真可惜,我正计划使用 doT 来提高速度。没有 express 模块,使用它的最佳方式是什么?或者是否有替代引擎可以与速度相媲美?
  • 你可以使用 Jade 或 Ejs,应该可以正常工作。
  • @NarendraSoni 我不确定 Ejs,但我知道 Jade 明显比 doT.js 慢,这就是我第一次选择它的原因。
  • 我喜欢使用 swig。它不是最快的,但功能齐全。

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


【解决方案1】:

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

Swig 是一个类似的应用程序。它不如 dot.js 快,但对我来说,它在速度和功能之间取得了很好的平衡,语法非常直观。

全面披露:我喜欢痛饮。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多