質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

2回答

2816閲覧

Node.jsのherokuへのデプロイをする際に出るCannot read property 'forEach' of undefinedについて

yahret45

総合スコア41

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2017/03/27 12:21

Node.jsでログイン機能と画像アップロード機能のついた簡単な掲示板を作成しました。

localサーバーでは問題無く動いていたのですが、herokuにデプロイした時、
下記のエラーが表示されました。

イメージ説明

views/index.ejsのソースは以下です。

index.ejs

1 <div class="wrapper"> 2 3 <% layout('layout') %> 4 <form action="/" method="post" class="board-form"> 5 タイトル: <input type="text" name="title" class="input" required><br> 6 <br> 7 <button type="submit" class="submit">ボード作成</button> 8 </form> 9 <ul class="main-list"> 10 <% boardList.forEach(function(boardItem) { %> 11 <li class="main-list__item"> 12 <a href="/boards/<%= boardItem.board_id %>" class="board"> 13 <p class="board__title"><%= boardItem.title %></p> 14 <p class="board__date"><%= boardItem.user_name %> <%= boardItem.created_at %></p> 15 </a> 16 </li> 17 <% }); %> 18 </ul> 19 <% if (typeof user !== 'undefined') { %> 20 <span class="login-user"><%= user.user_name %>さんとしてログインしています</span> 21 <% } %> 22 </div>

routes/index.jsの中で、
boardListは以下のように指定しています。

Node.js

1router.get('/', function(req, res) { 2 var query = 'SELECT B.board_id, B.user_id, B.title, ifnull(U.user_name, \'名無し\') AS user_name, DATE_FORMAT(B.created_at, \'%Y年%m月%d日 %k時%i分%s秒\') AS created_at FROM boards B LEFT OUTER JOIN users U ON B.user_id = U.user_id ORDER BY B.created_at DESC'; // 変更 3 connection.query(query, function(err, rows) { 4 res.render('index', { 5 title: 'はじめてのNode.js', 6 boardList: rows 7 }); 8 }); 9});

色々調べてもなかなか解決できません。

どのようにすれば正しく表示できるか教えて頂けると幸いです。
どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

DBのログをheroku logs --tailで確認した所、ローカル用のDBしか置かれていないことがわかりました。本番用のDBを用意し直し、無事解決に至りました。ありがとうございました。

投稿2017/03/28 08:41

yahret45

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

エラーメッセージ見る限り"boardList.rows"がnullのせいのようにみえますが、
DBとのコネクション再確認してみてはどうでしょうか。
あとクエリのリザルトが0レコードのときもnullが代入されるようになっていませんでしょうか。(その場合はnullをエスケープする必要があると思います)

試せてないので推測ですがお役に立てれば。。。

投稿2017/03/28 03:52

Neko_doshi

総合スコア214

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yahret45

2017/03/28 08:39

ありがとうございます!検証した所、DBのエラーでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問