javascript - Failed to lookup view in node express for jade -
i'm using jade template engine replace replace variables:; have tried 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 following test.jade:
html head title= title body h1= message but keep folowing error:
message:
> "failed lookup view > "<html><head><title>test2</title></head><body><h1>test1</h1></body></html>" > in views directory "c:\node\myproj\views"", alos here setup jade in app.js:
app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.engine('jade', require('jade').__express); so doing wrong? appreciated...
updated use res.render:
updated use app.render:
so changed 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 i'm caling in way in app.js:
var test = require('./routes/test'); app.use(test(app)); now gives me:
> "failed 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('test', {"message": "test1", "title": "test2"});
looks close request handler needs slight adjustment:
router.get('/test', function (req, res, next) { res.render('test', {"message": "test1", "title": "test2"})); }); - because set view engine,
res.rendersmart enough jade you - you can omit
./viewsprefix ,.jadesuffix again because express understands these defaults - you don't need require
jadein router file anymore
Comments
Post a Comment