EJS报错:无法找到与<%匹配的闭合标签 排查后仍未解决
问题原因定位
报错Could not find matching close tag for "<%"由两处语法问题导致,常规排查时很容易漏掉这类书写细节:
- 核心触发点:for循环内部判断RGP类型的if语句闭合标签写残缺了。原代码对应位置写的是
<% } %,末尾少了EJS闭合标签必需的>,解析器会判定这个<%开标签没有匹配的闭合标记,直接抛出标签不匹配错误。 - 额外语法隐患:表格第一列输出物料信息的EJS标签里,
Items[i].ItemCode和Items[i].ItemName两个变量之间没有拼接运算符,即便修复标签问题,这里也会触发JS运行时错误。
修复方案
- 补全残缺的if闭合标签,将
<% } %修改为<% } %> - 补全物料名称列的变量拼接逻辑,若需要两个值中间加空格分隔,写法调整为
<%= Items[i].ItemCode + ' ' + Items[i].ItemName %>即可
修复后对应位置的代码片段
<% for(let i = 0; i < Items.length; i++) { %> <tr> <td><%= Items[i].ItemCode + ' ' + Items[i].ItemName %></td> <td><%= Items[i].Unit %></td> <td><%= Items[i].Quantity%></td> <% if (GatePassType === "RGP") { %> <td><%=Items[i].ReturnDate%></td> <% } %> <td><%= Items[i].Remarks %></td> </tr> <% } %>
排查EJS标签不匹配错误时,除了检查标签是否成对、逻辑语句语法是否正确,还要重点检查标签的书写完整性:所有
<%起始的标签,末尾必须是完整的%>,缺任意一个字符都会被判定为标签未闭合。
内容的提问来源于stack exchange,提问作者Shubham Gupta
相关产品推荐
相关产品推荐

