简体   繁体   English

无法在玉石的节点快车中查找视图

[英]Failed to lookup view in node express for jade

I'm using Jade template engine to replace to replace my variables:; 我正在使用Jade模板引擎来替换以替换我的变量: I have tried the following: 我尝试了以下方法:

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;

and the following is my test.jade: 以下是我的test.jade:

html
  head
    title= title
  body
    h1= message

But I keep the folowing error: 但我保留以下错误:

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 here is my setup for jade in my app.js: 这是Alos在我的app.js中设置的玉器:

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

So what am I doing wrong? 那我在做什么错? Any help is appreciated... 任何帮助表示赞赏...

UPDATED to use res.render: 更新为使用res.render:

Updated to use app.render: 更新为使用app.render:

So I changed my route to: 因此,我将路线更改为:

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);
    });  
});

and now I'm caling in this way in app.js: 现在我在app.js中以这种方式进行校准:

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

Now it gives me: 现在它给了我:

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

Although res.render works fine: 尽管res.render可以正常工作:

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

Looks like you are close but your request handler needs slight adjustment: 看起来您很亲密,但您的请求处理程序需要稍作调整:

router.get('/test', function (req, res, next) {
    res.render('test', {"message": "test1", "title": "test2"}));
});
  • Because you set the view engine, res.render is now smart enough to do your jade for you 由于您设置了视图引擎,因此res.render现在足够聪明,可以为您做玉器
  • You can also omit the ./views prefix and .jade suffix again because express now understands these as defaults 您还可以再次省略./views前缀和.jade后缀,因为express现在将它们理解为默认值
  • You also don't need to require jade in your router file anymore 您也不再需要在路由器文件中添加jade

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM