EJS文件运行报错提示找不到<%对应的闭合标签,如何解决?
问题成因
报错指向主文件第28行的include语句,但问题基本不处于这行代码,常见原因有两类:
子文件问题(占绝大多数情况)
- 你引入的
include/_show.ejs子文件内存在未闭合的EJS标签:出现了<%、<%=、<%-这类起始标记后,漏写对应的%>闭合标记,或者闭合标记存在格式错误 - 子文件EJS标签内部代码存在语法错误:比如字符串漏写引号、括号未成对闭合,导致EJS解析器将后续内容误识别为标签内代码,最终检测不到闭合标记
- 极少情况是子文件内存在不可见特殊字符,打断了EJS的标签解析逻辑
主文件问题
- 主文件第28行之前的代码存在未闭合的EJS标签,解析到第28行时触发了报错校验
解决方法
- 优先排查
include/_show.ejs文件,逐行核对所有EJS标签的配对情况,确保每个起始标记都有对应的%>闭合,没有多余空格、特殊字符 - 检查子文件EJS标签内的代码语法,确认字符串、括号、变量引用都符合JS语法规范,没有语法错误
- 若初步排查子文件未发现问题,可以先清空
_show.ejs的所有内容,写入纯静态文本测试,如果主文件不再报错,即可确定问题出在子文件内容中,再逐段恢复子文件内容定位错误行 - 排除子文件问题后,检查主文件第28行之前的所有EJS标签配对情况,排除上层未闭合标签的影响
- 若以上排查都无问题,可以尝试将EJS升级到最新稳定版本,排除版本已知bug导致的解析异常
内容的提问来源于stack exchange,提问作者PocketPixie
相关产品推荐
相关产品推荐

