Express路由向EJS传数据时出现ReferenceError问题求助
问题解决:Express向EJS传递数据出现ReferenceError
核心问题
你的路由代码中,res.render的模板路径多了开头的斜杠,导致数据无法正确传递到EJS模板中。
修正步骤
修改Express路由中的res.render调用:
app.get('/view_employees', (req, res) => { const employees = [ {email: 'abrown@pd.com', role: 'Administrator'}, {email: 'jhoffman@pd.com', role: 'HR Representative'}, {email: 'tcooper@pd.com', role: 'HR Representative'}, {email: 'vsanders@pd.com', role: 'Employee'}, {email: 'crollins@pd.com', role: 'Employee'}, {email: 'pjackson@pd.com', role: 'Employee'}, {email: 'xwoods@pd.com', role: 'Employee'}, ]; // 去掉模板路径开头的斜杠,同时简化对象写法 res.render('view_employees', {employees}); });
额外优化建议
为避免类似未定义错误,建议在EJS模板中添加存在性判断,增强代码健壮性:
<% if (employees && employees.length) { %> <% employees.map((employee) => { %> <tr> <td><%=employee.email%></td> <td><%=employee.role%></td> </tr> <% }) %> <% } else { %> <tr> <td colspan="2">暂无员工数据</td> </tr> <% } %>
原因说明
Express中使用res.render时,模板名称不需要以斜杠开头——因为你已经通过app.set('views')指定了模板文件的根目录,开头的斜杠会干扰Express对模板路径的解析,最终导致传递的数据无法被EJS模板识别。
内容的提问来源于stack exchange,提问作者code writer 3000
相关产品推荐
相关产品推荐

