即使布局:false,也会使用express-partial调用布局

时间:2017-01-21 20:45:18

标签: node.js express ejs

在我的boolean中,我使用变量layout.ejs,如下所示:

user

每个页面都要求用户登录。但是,登录页面本身不应该<!DOCTYPE html> <html> <head> </head> <body> <div id="user-info">username: <%= user.username %></div> <%- body %> </body> </html> ,所以我想创建一个单独的登录页面(好吧,不应该&n) #39; t)使用部分。我试着这样做:

req.user

app.get('/login', function(req, res){ res.render('login.ejs', {layout: false}); }) 仅包含静态标记。但是,它仍然给出了login.ejs尝试访问layout.ejs变量的行的错误。

这是user的错误吗?我该如何避免/解决这个问题?

谢谢,

2 个答案:

答案 0 :(得分:0)

EJS提供条件,因此您应该将其应用于layout.ejs文件,如下所示:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <div id="user-info">username: <%= user.username %></div>
    <%if (user.username) { %>
         <%- body %>
    <% } %>
    <%- body %>
</body>
</html>

基本上这会告诉模板user.username是否存在,渲染此部分,否则不渲染它。

答案 1 :(得分:0)

我想你在添加node后没有重启{layout: false}。尝试重新启动节点进程。这应该可以解决问题。