我正在使用带有Node.js和Express的EJS模板。我正在尝试将请求参数传递给我的EJS模板。但是,由于某种原因,我的控制台日志报告了一些奇怪的内容。
版本:
以下是处理ejs模板的路线:
var express = require('express');
var router = express.Router();
var data = require('../data.json');
var pkg = require('../../package.json');
router.get('/', function(req, res) {
res.render('index',
{
'acs' : data.acs,
'products' : data.products,
'pkg' : pkg,
'debug' : req.param('debug')
});
});
module.exports = router;
这是控制台日志(我用“...”替换了任何长片以节省空间)
var __stack = {
lineno: 1,
input: "<!DOCTYPE html>\n<html lang=\"en\"> ... </html>\n",
filename: "/web/app/views/index.ejs" };
function rethrow(err, str, filename, lineno){
var lines = str.split('\n')
, start = Math.max(lineno - 3, 0)
, end = Math.min(lines.length, lineno + 3);
// Error context
var context = lines.slice(start, end).map(function(line, i){
var curr = i + start + 1;
return (curr == lineno ? ' >> ' : ' ')
+ curr
+ '| '
+ line;
}).join('\n');
// Alter exception message
err.path = filename;
err.message = (filename || 'ejs') + ':'
+ lineno + '\n'
+ context + '\n\n'
+ err.message;
throw err;
}
try {
var buf = [];
with (locals || {}) { (function(){
buf.push('<!DOCTYPE html>\n<html lang="en">...</html>\n'); })();
}
return buf.join('');
} catch (err) {
rethrow(err, __stack.input, __stack.filename, __stack.lineno);
}
就像我说的那样,它正在工作,但是我不知道为什么这会被记录在控制台中。谢谢你的帮助!
答案 0 :(得分:2)
问题是传递给res.render()
的第二个参数传递给渲染引擎 AND 你的模板。由于这种行为,ejs(在撰写本文时至少通过1.0)在该对象中查找debug
属性determine if debug information will be printed。