\r\n \r\n \r\n
\r\n
  • 求人
  • \r\n
    \r\n
    \r\n \r\n
    \r\n <%- include('footer'); %>\r\n \r\n\r\n```よろしくお願いします。","answerCount":1,"upvoteCount":0,"datePublished":"2021-04-05T04:10:41.219Z","dateModified":"2021-04-06T12:02:31.028Z","acceptedAnswer":{"@type":"Answer","text":"エラーメッセージにjobsが未定義ですと書かれています。\r\nレンダラにjobsを渡し忘れているか、渡したjobsが未定義であるかのどちらかです。\r\n\r\n※追記\r\ntop.ejsにjobsが渡されていません。\r\n```javascript\r\napp.get('/', (req, res) => {\r\n res.render('top.ejs');\r\n });\r\n```\r\njob.ejsにはちゃんと必要な値を渡せているので、やり方については解説は要りませんよね?","dateModified":"2021-04-06T07:43:48.654Z","datePublished":"2021-04-05T05:08:43.583Z","upvoteCount":2,"url":"https://teratail.com/questions/331556#reply-458053"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/MySQL","name":"MySQLに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/331556","name":"Node.jsでテーブルが未定義になってしまいます"}}]}}}
    質問するログイン新規登録

    Q&A

    解決済

    1回答

    1533閲覧

    Node.jsでテーブルが未定義になってしまいます

    lemona4e

    総合スコア2

    MySQL

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

    Node.js

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

    コンパイル

    コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

    コードレビュー

    コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

    0グッド

    1クリップ

    投稿2021/04/05 04:10

    編集2021/04/06 12:02

    0

    1

    Node.jsで簡単なクローンアプリを作っています。エラーになってしまうため、jobs未定義の修正場所と方法を教えていただきたいです。

    ReferenceError: /Users/Desktop/Node.js/Recruit/views/top.ejs:70 68| </div> 69| </li> >> 70| <% jobs.forEach((job) => { %> 71| <li class="job"><div class="job-title"><%= job.title %></div> 72| <p><img src="/images/list3.jpeg" alt="3"></p> 73| <p><%= job.point %></p> jobs is not defined at eval (eval at compile (/Users/Desktop/Node.js/Recruit/node_modules/ejs/lib/ejs.js:662:12), <anonymous>:12:8) at top (/Users/Desktop/Node.js/Recruit/node_modules/ejs/lib/ejs.js:692:17) at tryHandleCache (/Users/Desktop/Node.js/Recruit/node_modules/ejs/lib/ejs.js:272:36) at View.exports.renderFile [as engine] (/Users/Desktop/Node.js/Recruit/node_modules/ejs/lib/ejs.js:489:10) at View.render (/Users/Desktop/Node.js/Recruit/node_modules/express/lib/view.js:135:8) at tryRender (/Users/Desktop/Node.js/Recruit/node_modules/express/lib/application.js:640:10) at Function.render (/Users/Desktop/Node.js/Recruit/node_modules/express/lib/application.js:592:3) at ServerResponse.render (/Users/Desktop/Node.js/Recruit/node_modules/express/lib/response.js:1012:7) at /Users/Desktop/Node.js/Recruit/app.js:8:7 at Layer.handle [as handle_request] (/Users/Desktop/Node.js/Recruit/node_modules/express/lib/router/layer.js:95:5) ```データベースで以下のように値を入れました。

    mysql> DESCRIBE jobs;
    +----------+--------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+--------------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | title | char(70) | YES | | NULL | |
    | point | varchar(50) | YES | | NULL | |
    | contents | varchar(500) | YES | | NULL | |
    +----------+--------------+------+-----+---------+----------------+
    4 rows in set (0.02 sec)

    mysql> INSERT INTO jobs(title, point, contents) VALUES('タイトル', 'ポイント', '募集しています');
    Query OK, 1 row affected (0.02 sec)

    mysql> SELECT * FROM jobs;
    +----+--------------+--------------+-----------------------+
    | id | title | point | contents |
    +----+--------------+--------------+-----------------------+
    | 1 | タイトル | ポイント | 募集しています |
    +----+--------------+--------------+-----------------------+
    1 row in set (0.00 sec)

    mysql>

    (追記2)修正済みです。回答欄で流れを確認できます。 ```js const express = require('express'); const mysql = require('mysql'); const app = express(); app.use(express.static('public')); app.use(express.urlencoded({extended: false})); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'Recruit' }); app.get('/', (req, res) => { res.render('top.ejs'); }); app.get('/job', (req, res) => { connection.query( 'SELECT * FROM jobs', (error, results) => { res.render('job.ejs', { jobs: results }); } ); }); app.get('/content/:id', (req, res) => { const id = req.params.id; connection.query( 'SELECT * FROM jobs WHERE id = ?', [id], (error, results) => { res.render('content.ejs', { job: results[0] }); } ); }); app.listen(4090);

    ejs

    1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Recruit</title> 6 <link rel="stylesheet" href="/css/style.css"> 7 <script src="/send_url.js"></script> 8 </head> 9 <body> 10 <header> 11 <li><a href="/job">求人</a></li> 12 </header> 13 <main> 14 <ul> 15 <% jobs.forEach((job) => { %> 16 <li class="job"><div class="job-title"><%= job.title %></div> 17 <p><img src="/images/list3.jpeg" alt="3"></p> 18 <p><%= job.point %></p> 19 <button><a href="/content/<%= job.id %>">詳細を見る</a></button> 20 </li> 21 <% )} %> 22 </ul> 23 </main> 24 <%- include('footer'); %> 25 </body> 26</html> 27```よろしくお願いします。

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

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

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

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

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

    guest

    回答1

    0

    ベストアンサー

    エラーメッセージにjobsが未定義ですと書かれています。
    レンダラにjobsを渡し忘れているか、渡したjobsが未定義であるかのどちらかです。

    ※追記
    top.ejsにjobsが渡されていません。

    javascript

    1app.get('/', (req, res) => { 2 res.render('top.ejs'); 3 });

    job.ejsにはちゃんと必要な値を渡せているので、やり方については解説は要りませんよね?

    投稿2021/04/05 05:08

    編集2021/04/06 07:43
    AT_2nd

    総合スコア266

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

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

    lemona4e

    2021/04/05 05:18

    ご回答ありがとうございます。そのどちらかの場合の確認方法と修正方法も教えていただけますと嬉しいです。
    AT_2nd

    2021/04/05 05:24

    それに回答するには、まずソースを提示して下さい。
    lemona4e

    2021/04/06 12:03 編集

    質問を編集いたしました。どうぞよろしくお願いいたします。
    lemona4e

    2021/04/06 11:47

    content.ejsを追加し、job.ejsがcontent.ejs、top.ejsがjob.ejsになりましたが、追記のご指摘の通りjobsを渡すと、実行することができました!!ありがとうございました!
    guest

    あなたの回答

    tips

    太字

    斜体

    打ち消し線

    見出し

    引用テキストの挿入

    コードの挿入

    リンクの挿入

    リストの挿入

    番号リストの挿入

    表の挿入

    水平線の挿入

    プレビュー

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

    ただいまの回答率
    85.29%

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

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

    質問する

    関連した質問