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

EJS文件中编写else if条件语句抛出语法错误如何修复

EJS中else if语法报错修复方案

错误原因

EJS解析模板时,会把不同<% %>脚本标签之间的所有内容(包括换行、缩进空格)识别为需要输出的模板文本,编译为对应的JS输出代码。你当前的写法把前一个判断块的闭合大括号}和后续的else if拆到了两个独立的脚本标签中,编译后生成的JS代码会在}和else if之间插入输出空白内容的逻辑,直接违反JS语法规则,因此抛出语法错误。
另外你当前代码中if和else if的判断条件完全一致,逻辑上else if分支永远不会被触发,属于逻辑bug,需要按实际业务需求调整判断条件。

修复方式

将前一个判断块的闭合大括号、else if语句、后续的开括号放在同一个<% %>脚本标签内,不要拆分即可解决语法问题,修正后的参考代码如下:

<% if(locals.user && locals.user.id == post.user.id){ %>
  <small>
    <a href="/comments/destroy/?comment_id=<%= comment.id %>&post_id=<%= post.user.id %>">
      <i class="fa fa-trash"></i>
    </a>
  </small>
<% } else if(locals.user && locals.user.id == comment.user.id){ %>
  <!-- 注:此处判断条件已按删除评论的常规逻辑调整为「当前用户是评论作者」,你可以根据实际需求修改 -->
  <small>
    <a href="/comments/destroy/<%= comment.id %>">
      <i class="fa fa-trash"></i>
    </a>
  </small>
<% } %>

如果需要写多分支判断,所有的} else if(...) {、} else {都要遵循这个规则,和前一个块的闭合大括号放在同一个EJS脚本标签中,不要拆分到不同标签里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:15:26