【发布时间】:2020-07-20 22:23:17
【问题描述】:
我是 nodejs、express 和 ejs 的新手。我正在开发一个非常简单的表单,它允许用户提交州名,并且该州名用于在 api 中获取包含该州名的所有电影标题,并将它们呈现在我的结果页面上。我得到了 TypeError 响应,或者我的浏览器将持续加载而没有响应。
(错误响应)
TypeError: /Users/Documents/NodeProjects/webProj/moreapps/views/results.ejs:3
1| <h1>Here is the Results Page!!!!</h1>
2|
>> 3| <% data["Search"].forEach(function(movie) { %>
4| <li><%= movie["Title"] %></li>
5|
6| <% }) %>
Cannot read property 'forEach' of undefined
at eval (eval at compile (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/ejs/lib/ejs.js:632:12), <anonymous>:10:23)
at results (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/ejs/lib/ejs.js:662:17)
at tryHandleCache (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/ejs/lib/ejs.js:255:36)
at View.exports.renderFile [as engine] (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/ejs/lib/ejs.js:461:10)
at View.render (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/express/lib/view.js:135:8)
at tryRender (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/express/lib/application.js:640:10)
at Function.render (/Users /Documents/NodeProjects/webProj/moreapps/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/express/lib/response.js:1008:7)
at Request._callback (/Users/Documents/NodeProjects/webProj/moreapps/app.js:34:7)
at Request.self.callback (/Users/Documents/NodeProjects/webProj/moreapps/node_modules/request/request.js:185:22)
(app.js)
app.set("view engine", "ejs");
app.get("/", function(req, res) {
res.render('search');
});
app.get('/results', function (req, res, next) {
//console.log ('hello world');
request('https://www.omdbapi.com/?s=&apikey=thewdb', function (error, response, body) {
if(!error && response.statusCode == 200) {
var data = JSON.parse(body);
var search = data["Search"];
//console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log(data);
//res.send(parsedData);
res.render('results', {data: data});
//console.log(body);
}
});
});
(search.ejs)
<h1>Search for a movie!!!</h1>
<form action="/results" method="GET">
<input type="text" placeholder="search term" name="search">
<input type="submit">
</form>
(results.ejs)
<h1>Here is the Results Page!!!!</h1>
<% data["Search"].forEach(function(movie) { %>
<li><%= movie["Title"] %></li>
<% }) %>
【问题讨论】:
-
能否请我们提供一个有效回复的模板?
-
我添加了更彻底的回复。希望这会有所帮助,谢谢