javascript - 无法在 Node Express 中查找 Jade View

标签 javascript node.js templates express pug

我正在使用 Jade 模板引擎来替换我的变量:;我尝试过以下方法:

var express = require('express');
var jade = require('jade');
var router = express.Router();
router.get('/test', function (req, res, next) {
        var html= res.render(jade.renderFile('test', {"message": "test1", "title": "test2"}));
        res.render(html);
});
module.exports = router;

以下是我的 test.jade:

html
  head
    title= title
  body
    h1= message

但是我保留了以下错误:

消息:

> "Failed to lookup view
> "<html><head><title>test2</title></head><body><h1>test1</h1></body></html>"
> in views directory "C:\node\myProj\views"",

Alos 这是我在 app.js 中对 jade 的设置:

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.engine('jade', require('jade').__express);

那我做错了什么?如有任何帮助,我们将不胜感激...

更新为使用 res.render:

更新为使用 app.render:

所以我将路线更改为:

var express = require('express');
var router = express.Router();
var app;
module.exports = function (_app) {
    app = _app;
    return router;
}
router.get('/test', function (req, res, next) {
    app.render('test', {"message": "test1", "title": "test2"}, function(err, html){
         res.render(html);
    });  
});

现在我在 app.js 中以这种方式进行调用:

var test = require('./routes/test');
app.use(test(app));

现在它给了我:

> "Failed to lookup view
> "<html><head><title>test2</title></head><body><h1>test1</h1></body></html>"
> in views directory "C:\node\myProj\views""

虽然 res.render 工作正常:

res.render('test', {"message": "test1", "title": "test2"});

最佳答案

看起来您已经很接近了,但您的请求处理程序需要稍微调整:

router.get('/test', function (req, res, next) {
    res.render('test', {"message": "test1", "title": "test2"}));
});
  • 因为您设置了 View 引擎,res.render 现在足够智能,可以为您完成 jade
  • 您还可以再次省略 ./views 前缀和 .jade 后缀,因为 Express 现在将它们理解为默认值
  • 您也不再需要在路由器文件中 require jade

关于javascript - 无法在 Node Express 中查找 Jade View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173715/

相关文章:

javascript - 学习 RaphaelJs 的好引用

c++ - 使用 g++ 的 decltype 模板声明

javascript - 如何跳过 JavaScript for-of 循​​环中的第一次迭代

node.js - 使用 nodejs ffmpeg 流式传输网络摄像头

node.js - Protractor:同一页面有两个下拉菜单,只能从一个下拉菜单中成功选择元素

c++ - 有没有更好的方法来通过模板用预先计算的值填充数组(用于运行时)?

c++ - 创建通用插入函数

javascript - css 中文本的溢出隐藏

javascript - Express.js发布请求 "Origin null is not allowed"错误

javascript - 在html body标签中调用脚本函数