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

EJS模板for循环用数字作为终止条件报错:无法读取undefined的icon_url属性

解决EJS循环中"Cannot read property 'icon_url' of undefined"的问题

这个报错的原因很明确——你的users数组里的元素数量不足40条!当循环执行到i的值超过users数组的实际长度时,users[i]就变成了undefined,这时候再去访问它的icon_url属性,自然就会抛出这个错误。

给你两个层面的修复方案,结合起来用最稳妥:

1. 限制循环上限,避免越界

不要硬写死循环40次,而是取users数组长度和40中较小的那个值作为循环的终止条件,这样既保证最多显示40条,又不会去访问数组里不存在的元素。

2. 增加空值判断,双重保险

即使数组里存在null或者空对象的元素,提前判断也能避免报错。

修改后的完整代码如下:

<% // 计算实际要循环的最大条数:取数组长度和40的最小值 %>
<% const maxDisplayCount = Math.min(users.length, 40); %>
<% for(var i=0; i<maxDisplayCount; i++) { %>
  <% const currentUser = users[i]; %>
  <% // 先判断currentUser是否存在,再判断icon_url是否有效 %>
  <% if (currentUser && currentUser.icon_url) { %>
    <a href="<%= currentUser.app_download_link %>">
      <img title="<%= currentUser.title %>" class="photo" src="<%= currentUser.icon_url %>">
    </a>
  <% } %>
<% } %>

这样修改后,不管你的users数组是只有20条还是有50条,都能正常渲染前40条(或者全部现有元素),而且不会再出现那个属性读取错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:12:54