EJS使用else时出现编译错误Unexpected token 'else'问题咨询
问题根因
你触发报错的核心原因是将if的条件判断和后续代码块的起始大括号拆分到了两个独立的EJS脚本标签中:
<!-- 错误写法示例 --> <%if(kindOfDay==="sunday"||kindOfDay==="saturday")%> <% { %>
EJS编译时会判定第一个标签里的if语句已经执行完毕、没有绑定对应代码块,后续出现的else找不到匹配的if语句,因此抛出Unexpected token 'else'的语法错误。
修复方案
将if的条件判断和代码块起始大括号放在同一个EJS标签内即可,修复后的完整代码如下:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>To Do List</title> </head> <body> <% if(kindOfDay==="sunday"||kindOfDay==="saturday") { %> <h1 style="color:pink;">Today is <%=kindOfDay%></h1> <% } else { %> <h1 style="color:blue">Today is <%=kindOfDay%></h1> <% } %> </body> </html>
注意事项
- EJS的流程控制语句(if/else、for循环等)的核心语法结构不要拆分到多个<% %>标签中,保证语法连贯性
- 写完条件判断结构后要检查大括号配对、标签闭合,避免多余的换行拆分语法逻辑
内容的提问来源于stack exchange,提问作者ANIKET KANKEKAR
相关产品推荐
相关产品推荐

