You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:10:22