Express+EJS项目报错:Posts未定义,已在index.js声明posts数组
解决EJS模板中「Posts is not defined」的引用错误
核心问题:变量大小写不匹配
JavaScript严格区分大小写,你在后端index.js中传递给模板的变量是小写的posts,但在EJS模板里遍历的是大写开头的Posts,这直接导致模板找不到对应变量,抛出未定义错误。
修复步骤
- 修正EJS模板中的变量名
将index.ejs里的Posts改为posts,修正后代码如下:
<body> <h1>Quora Posts</h1> <% for(post of posts) { %> <div class="post"> <h3 class="user">@ <%= post.username %></h3> <h4 class="content"><%= post.content %></h4> </div> <% } %> </body>
- 修复视图引擎设置的拼写错误
你的index.js中视图引擎设置代码有误,正确写法是view engine(原代码多了一个s),这个错误会导致Express无法正确识别EJS模板引擎,修正后代码:
app.set("view engine", "ejs");
- 可选:规范数组语法(非必要)
posts数组最后一个元素后多余的逗号可以去掉,让代码更规范:
let posts = [ {username : "Naved",content : "I love coding"}, {username : "Noman",content : "I love studying"}, {username : "Saimoon",content : "I love cooking"} ];
内容的提问来源于stack exchange,提问作者Naved Khan
相关产品推荐
相关产品推荐

