javascript - Node 无法读取未定义的属性 'forEach'

标签 javascript node.js express

我收到此错误,我找不到解决方案,我的代码是正确的,我认为这是视频类(class),我可以通过 instagra api 显示来自 instaram 的热门照片,但当我尝试执行 Node 运行正常时我得到这个我无法理解我的错误

TypeError:\Desktop\instagramApp\views\pages\index.ejs:13
   11| <main>
   12| <div class="row">
>> 13| <% grams.forEach(function(gram)  { %>
   14| <div class="instagram-pic col-sm-3">
   15| <a href="<%= gram.link %>"target="_blank">
   16|  <img src="<%= gram.images.standard_resolution.url %>" class="img-responsive">

Cannot read property 'forEach' of undefined
   at eval (eval at <anonymous> (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\ejs\lib\ejs.js:464:12), <anonymous>:23:13)
   at returnedFn (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\ejs\lib\ejs.js:493:17)
   at View.exports.renderFile [as engine] (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\ejs\lib\ejs.js:350:31)
   at View.render (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\express\lib\view.js:126:8)
   at tryRender (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\express\lib\application.js:639:10)
   at EventEmitter.render (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\express\lib\application.js:591:3)
   at ServerResponse.render (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\express\lib\response.js:961:7)
   at C:\Users\Kel3vra\Desktop\instagramApp\server.js:24:7
   at handle_error (C:\Users\Kel3vra\Desktop\instagramApp\node_modules\instagram-node\lib\instagram.js:255:14)
   at C:\Users\Kel3vra\Desktop\instagramApp\node_modules\instagram-node\lib\instagram.js:904:16 

这是index.ejs的代码

     <!DOCTYPE html>
    <html>
    <head>
        <% include ../partials/head %>
        <title></title>
    </head>
    <body class="container">
        <header>
        <% include ../partials/header %>
        </header>
        <main>
        <div class="row">
        <% grams.forEach(function(gram)  { %>
            <div class="instagram-pic col-sm-3">
            <a href="<%= gram.link %>"target="_blank">
              <img src="<%= gram.images.standard_resolution.url %>" class="img-responsive">
            </a>
            </div>

            <div class="instagram-bar">
                <div class="likes">
                <span class="glyphicon glyphicon-heart"></span>
                <%= gram.likes.count %>
                </div>
            </div>

            <div class="comments">
            <span class="glyphicon glyphicon-comment"></span>
                <%= gram.comments.count %>
            </div>
          <%  }); %>


         </div>
        </main>

        <footer>
        <% include ../partials/footer %>
        </footer>
    </body>

    </html>

到我的 server.js

var express = require('express');    
var app = express();
var instagram = require('instagram-node').instagram();

app.use(express.static(__dirname + '/public'));    
app.set('view engine', 'ejs');

instagram.use({
  client_id: /************/,
  client_secret: /*************/
});

app.get('/',function (req, res) {
  instagram.media_popular(function (err, medias, remaining, limit) {
    res.render('pages/index',{ grams: medias });
  });
});

app.listen(8080, function (err) {
  if(err) {
    console.log("error");
  } else {
    console.log("Listening on port 8080")
  }
});

最佳答案

它看起来像这一行中的变量medias:

res.render('pages/index',{ grams: medias });

…未定义 - 首次访问(在模板中)时会抛出错误。

instagram.media_popular 函数可能会返回错误,您可以通过将路由更新为来检查该错误:

app.get('/',function (req, res, next) {
  instagram.media_popular(function (err, medias, remaining, limit) {
    if(err) return next(err);
    res.render('pages/index', { grams: medias });
  });
});

(请注意顶部额外的 next,这允许您将错误传递给快速错误处理代码)

关于javascript - Node 无法读取未定义的属性 'forEach',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996617/

相关文章:

node.js - 当代理响应包含 `connection: close` header 时如何处理 ECONNRESET?

javascript - Mocha 'before each hook' 消息为红色。我怎么知 Prop 体出了什么问题?

node.js - aws ubuntu上的 Node 错误但不是OSX

node.js - 当页面上的元素发生变化时刷新

node.js - 通过 node.js/express 向客户端提供 socket.io javascript 文件

javascript - 如何使用 Express & MySQL 和 JWT 实现成员(member)功能

javascript - jQuery 克隆表单提交不起作用

javascript - 返回一个字符串,将字符串中的每个元素[0]替换为元素[1]

javascript - chrome.storage 从数组中删除特定项目

javascript - 使用 Javascript 或 ajax 保存并自动下载 Canvas 绘图