Ошибка ejs не определена? - PullRequest
0 голосов
/ 28 июня 2018

Я использую 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 голосов
/ 28 июня 2018

Чтобы соответствовать соглашению примеров быстрого запуска веб-страницы ejs, измените ваш вызов на render, чтобы сделать ejsData свойством переданного объекта:

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

Возможно, немного чище и, возможно, иллюстрирует, что происходит лучше. Просто удалите строку "ejsData" из вашего файла ejs (не меняйте вызов 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, который вы ей передаете, ничего не будут знать об этом имени переменной (если вы не сделаете это свойством объекта, который вы передаете, как в первом примере).

0 голосов
/ 28 июня 2018

Ссылка на свойства объекта, который вы передаете в шаблон, а не на сам объект, т.е.

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

Если вы хотите сослаться на объект напрямую, вам нужно вместо этого передать его как свойство

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