NodeJS+EJS传参报错:SyntaxError: missing ) after argument list求助
解决EJS模板中
SyntaxError: missing ) after argument list错误 你的问题出在两个地方:
1. EJS模板逻辑结构错误
你把else语句错误地放在了forEach循环的回调代码块里,但这个else本属于外层的if判断,位置错乱导致EJS解析时语法结构混乱,触发了括号缺失的错误。
修正后的blog.ejs代码:
<!DOCTYPE html> <html lang="en"> <%- include("./partial/head.ejs") %> <body> <%- include("./partial/nav.ejs") %> <h3>All Blogs</h3> <div> <% if (blogs.length > 0){ %> <% blogs.forEach(blog => {%> <div class="contents"> <h2><%= blog.title %></h2> <p><%= blog.content %></p> </div> <% }) %> <!-- 先闭合forEach的回调函数 --> <% } else { %> <!-- 这里才是if判断对应的else分支 --> <h2> There's no blog post</h2> <% }%> </body> </html>
2. app.js语法错误
你的app.get("/blogs")回调函数没有闭合,缺少了最后的}),这也会导致Node.js运行时的语法异常。
修正后的app.js代码:
const express = require("express") const app = express() app.listen(3000) app.set("view engine", "ejs"); app.set('views', __dirname + '/views'); app.get("/blogs", (req, res) => { const blogs = [{title: "first blog", content:"this a my first blog post"}, { title: "first blog", content: "this a my second blog post" }] res.render("blogs", { title: "home", blogs}) }) // 补上回调函数的闭合括号
修改后语法错误会被修复,blogs数据也能正常渲染到EJS模板中。
内容的提问来源于stack exchange,提问作者Emmanuel uzoezie
相关产品推荐
相关产品推荐

