错误的ejs未定义?

时间:2018-06-27 23:17:48

标签: javascript node.js compiler-errors ejs

我正在使用ejs,并且我有以下代码。

app.get('/profile/:name',function(req,res){
var data={
age: 29,
job:'ninja'
 };
 var ejsData={
data:data,
person:req.params.name
};
res.render('profile',ejsData);
});

使用以下ejs文件

<!doctype html>
<html>
<head>
<style>
body{background: skyblue;font-family: verdana;color: #fff;padding: 
30px;}
h1{font-size: 48px;text-transform: uppercase;letter-spacing: 2px;text- 
align: center;}
p{font-size: 16px}


</style>
</head>
<body>
<h1>Profile Page <%= ejsData.person %></h1>
<p>The Age of the Person is <%= ejsData.data.age %> </p>
<p>He works as a <%= ejsData.data.job %> </p>
</body>
</html>

但是我一直收到此错误?我在做什么?

enter image description here

2 个答案:

答案 0 :(得分:0)

引用传递到模板中的对象的属性,而不是引用对象本身。

<h1>Profile page <%= person %>
<p>The age of the person is <%= data.age %> </p>
...

如果要直接引用该对象,则需要将其作为属性传递

res.render("profile", { ejsData }):

答案 1 :(得分:0)

要匹配ejs网页快速入门示例的约定,请更改对render的调用,以使ejsData成为传入对象的属性:

res.render('profile', {ejsData: ejsData}); 

可能更简洁一些,也许可以说明正在发生的事情,只需从ejs文件中删除字符串“ ejsData”即可(不要更改res.render调用):

<!doctype html>
<html>
<head>
<style>
body{background: skyblue;font-family: verdana;color: #fff;padding: 
30px;}
h1{font-size: 48px;text-transform: uppercase;letter-spacing: 2px;text- 
align: center;}
p{font-size: 16px}


</style>
</head>
<body>
<h1>Profile Page <%= person %></h1>
<p>The Age of the Person is <%= data.age %> </p>
<p>He works as a <%= data.job %> </p>
</body>
</html>

正如代码在您的文章中所言,ejsData只是传递给render的变量的名称。您给它提供的render函数和ejs模板对变量名一无所知(除非像第一个示例那样将其设为传入对象的属性)。