gpt4 book ai didi

node.js - res.render 中的 req.param 导致奇怪的控制台日志

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:23 25 4
gpt4 key购买 nike

我正在将 EJS 模板与 Node.js 和 Express 结合使用。我正在尝试将请求参数传递给我的 EJS 模板。然而,它正在工作,由于某种原因,我的控制台日志报告了一些奇怪的事情。

版本:

  • Node 0.10.26
  • Express 4.6.1
  • EJS 0.8.5

这是处理 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);
}

就像我说的,它正在工作,但是我不知道为什么它被记录在控制台中。感谢您的帮助!

最佳答案

问题是传递给 res.render() 的第二个参数同时传递给渲染引擎您的模板。由于这种行为,ejs(至少在撰写本文时从 1.0 开始)会在该对象中查找 debug 属性以 determine if debug information will be printed .

关于node.js - res.render 中的 req.param 导致奇怪的控制台日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com