Express向EJS模板传值时报rp4you未定义错误该如何解决?
错误原因
GET /路由渲染index模板时未传递任何参数,用户首次访问页面触发的是GET请求,此时模板中引用的rp4you等变量均不存在,直接抛出未定义错误。- EJS模板中使用了
costtsb变量,但app.js的POST路由里传递的对应字段是valueptsb,变量名不匹配,即便提交表单后也会触发该变量未定义错误。
修复步骤
- 给
GET /路由添加默认参数传递,修改app.js中的GET路由代码:
app.get("/", function(req, res) { res.render("index", { rp4you: '', cp4you: '', b2b4youa: '', b2b4youb: '', valueptsb: '', rptsb: '', cptsb: '', }) });
- 修改EJS模板中的变量名,将
<p><%=costtsb%></p>改为<p><%=valueptsb%></p>,和app.js传递的字段名保持一致。
(可选优化)如果希望变量不存在时不渲染对应内容,可以在EJS中增加判断逻辑:
<% if (rp4you) { %> <p><%=rp4you%></p> <% } %>
其余变量同理添加判断即可,避免空值显示空白段落。
内容的提问来源于stack exchange,提问作者Bu Fahad
相关产品推荐
相关产品推荐

