You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js运行EJS页面报pizzalist is not defined错误如何解决?

错误原因

你直接访问首页时触发的是GET /请求,查看对应路由逻辑可以看到,GET请求渲染index.ejs时仅传递了title参数,没有传递模板中用到的pizzalist变量,因此模板遍历变量时直接抛出未定义错误。只有触发POST请求提交数据后,才会查询所有披萨数据并传递pizzalist参数渲染页面,这就是你首次访问首页报错的核心原因。

修复步骤

1. 修改GET路由逻辑

在渲染首页前先查询所有披萨数据,将pizzalist同步传递给模板,修改后的router.route('/').get代码如下:

.get((req,res,next) => {
  pizzas.find()
  .then((pizzasfound) => {
    res.render('index.ejs', { 
      title: 'Pizza shop',
      pizzalist: pizzasfound 
    });   
  }, (err) => next(err))
  .catch((err) => next(err))
})

2. 优化模板兼容空数据场景

为了避免无数据时遍历报错,可以给模板的循环逻辑加非空判断,修改index.ejs中表格tbody部分的代码如下:

<tbody>
  <% if(pizzalist && pizzalist.length) { %>
    <% for(var i=0; i < pizzalist.length; i++) { %>
    <tr>
      <td><%= pizzalist[i].name %></td>
      <td><%= pizzalist[i].description %></td>
      <td><%= pizzalist[i].customer %></td>
    </tr>
    <% } %>
  <% } else { %>
    <tr>
      <td colspan="3">暂无展示数据</td>
    </tr>
  <% } %>
</tbody>

修改完成后重启服务即可正常访问首页。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:06:07