EJS模板使用forEach循环时报Unexpected token ')'编译错误求解
EJS渲染Todo List列表项语法错误修复
问题场景
- 开发Todo List项目过程中使用EJS模板引擎做页面渲染,编写循环渲染待办项的代码后,运行触发EJS编译报错。
原错误代码
<%= kindOfItems.forEach( function (item) { %> <div class = "item"> <input type="checkbox"> <p> <%= item.name %> </p> </div> <%= }) %>
报错信息
SyntaxError: Unexpected token ')' in D:\web development\todoList\Todo-List---EJS-master\Todo-List---EJS-master\views\list.ejs while compiling ejs
错误根因
- EJS标签混用:
<%= %>的作用是计算内部JS表达式的值,转义后输出到HTML结构中,仅适合用来输出变量、表达式结果,不能包裹无返回值的流程控制代码。 - 原代码中
forEach循环的起始声明、末尾的闭合})都错误使用了<%= %>输出标签,EJS编译时会把这部分代码识别为待输出的表达式,遇到流程控制的闭合括号时无法解析,直接抛出语法错误。
修复后代码
<% kindOfItems.forEach( function (item) { %> <div class = "item"> <input type="checkbox"> <p> <%= item.name %> </p> </div> <% }) %>
修复说明
- 仅需要输出到页面的内容(比如待办项名称
item.name)保留<%= %>输出标签。 - 负责执行循环逻辑、不向页面输出内容的代码段(forEach开头、末尾闭合括号),替换为无输出的JS执行标签
<% %>即可解决问题。
内容的提问来源于stack exchange,提问作者Nawoda Jayasinghe
相关产品推荐
相关产品推荐

