簡體   English   中英

無法在玉石的節點快車中查找視圖

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

我正在使用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中設置的玉器:

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"}));
});
  • 由於您設置了視圖引擎,因此res.render現在足夠聰明,可以為您做玉器
  • 您還可以再次省略./views前綴和.jade后綴,因為express現在將它們理解為默認值
  • 您也不再需要在路由器文件中添加jade

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM