/ / req.param wewnątrz res.render powoduje dziwny log konsoli - node.js, express

req.param wewnątrz res.render powoduje dziwny dziennik konsoli - node.js, express

Używam szablonów EJS z Node.js oraz Express. Próbuję przekazać parametr żądania do mojego szablonu EJS. Działa jednak z jakiegoś powodu mój dziennik konsoli zgłasza coś dziwnego.

Wersje:

  • Węzeł 0.10.26
  • Express 4.6.1
  • EJS 0.8.5

Oto trasa obsługująca szablon 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;

To jest dziennik konsoli (Zastąpiłem wszystko długie na „...”, aby zaoszczędzić miejsce)

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 + "nn"
+ 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);
}

Tak jak powiedziałem, działa, ale nie mogę powiedzieć, dlaczego jest to rejestrowane w konsoli. Dzięki za pomoc!

Odpowiedzi:

2 dla odpowiedzi № 1

Problem w tym, że drugi argument został przekazany do res.render() jest przekazywana do obu silników renderujących I Twój szablon. Z powodu tego zachowania ejs (przynajmniej do 1.0 w chwili pisania tego tekstu) szuka pliku debug właściwość w tym obiekcie do określić, czy informacje debugowania zostaną wydrukowane.