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

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

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

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

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

831閲覧

Node.jsとMySQLを実行するとundefinedと表示されます。

KIND

総合スコア1

MySQL

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

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/01/29 09:39

編集2023/01/29 10:29

前提

プログラミング初学者です。
初投稿ですので至らない点が多いかもしれませんがよろしくお願いします。

またMac OSで実装しています。

発生している問題・エラーメッセージ

Node.jsとMySQL を接続したくProgateの記事を真似てコードを書きましたが、
実行するとundefinedと表示されます。
https://prog-8.com/docs/nodejs-mysql
↓実行結果

undefined

↓希望する実行結果

success {id:1, name:'にんじゃわんこ'}

該当のソースコード

App.js

js

1//パッケージ読み込み 2const express = require('express'); 3const mysql = require('mysql'); 4 5const app = express(); 6 7// MySQLの接続情報 8const connection = mysql.createConnection({ 9 host: 'localhost', 10 user: 'root', 11 password: '********', 12 database: 'progate' 13}); 14 15//MySQLへの接続ができていないときにエラーを表示 16connection.connect((err) => { 17 if (err) { 18 console.log('error connecting: ' + err.stack); 19 return; 20 } 21 console.log('success'); 22}); 23 24//HTTPリクエストを受け取る部分 25app.get('/', (req, res) => { 26 connection.query( 27 'SELECT * FROM users', 28 (error, results) => { 29 console.log(results); 30 res.render('hello.ejs'); 31 } 32 ); 33}); 34 35app.listen(3000);

hello.ejs

ejs

1<h1>Hello World</h1>

MySQL

1mysql> show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| mysql | 7| performance_schema | 8| progate | 9| sys | 10+--------------------+ 115 rows in set (0.00 sec) 12 13mysql> use progate; 14Database changed 15 16mysql> show tables; 17+-------------------+ 18| Tables_in_progate | 19+-------------------+ 20| users | 21+-------------------+ 221 row in set (0.00 sec) 23 24mysql> describe users; 25+-------+---------+------+-----+---------+----------------+ 26| Field | Type | Null | Key | Default | Extra | 27+-------+---------+------+-----+---------+----------------+ 28| id | int(11) | NO | PRI | NULL | auto_increment | 29| name | text | YES | | NULL | | 30+-------+---------+------+-----+---------+----------------+ 312 rows in set (0.00 sec) 32 33mysql> select * from users; 34+----+-----------------------+ 35| id | name | 36+----+-----------------------+ 37| 1 | にんじゃわんこ | 38+----+-----------------------+ 391 row in set (0.00 sec) 40 41 42mysql> select user,host from mysql.user ; 43+---------------+-----------+ 44| user | host | 45+---------------+-----------+ 46| mysql.session | localhost | 47| mysql.sys | localhost | 48| root | localhost | 49+---------------+-----------+ 503 rows in set (0.00 sec)

package.json

1{ 2 "name": "list-app", 3 "version": "1.0.0", 4 "description": "", 5 "main": "index.js", 6 "scripts": { 7 "test": "echo \"Error: no test specified\" && exit 1" 8 }, 9 "keywords": [], 10 "author": "", 11 "license": "ISC", 12 "dependencies": { 13 "ejs": "^3.1.8", 14 "express": "^4.18.2", 15 "mysql": "^2.18.1" 16 } 17}

試したこと

調べたところ同じような問題を抱えている記事がありましたが、
私の問題は解決しませんでした。
https://teratail.com/questions/305536

また、localhos:3000を立ち上げるとHelloWorldと表示はされます。

回答による返信

ターミナルで実行しました。
実行後にlocalhost:3000を開くとundefinedと表示されます。
実行結果は↓このようです。

(base) ***@MacBook-3 list-app % node app.js error connecting: Error: connect ECONNREFUSED ::1:3306 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1229:16) -------------------- at Protocol._enqueue (/Users/***/Downloads/JS/list-app/node_modules/mysql/lib/protocol/Protocol.js:144:48) at Protocol.handshake (/Users/***/Downloads/JS/list-app/node_modules/mysql/lib/protocol/Protocol.js:51:23) at Connection.connect (/Users/***/Downloads/JS/list-app/node_modules/mysql/lib/Connection.js:116:18) at Object.<anonymous> (/Users/***/Downloads/JS/list-app/app.js:13:12) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Module._load (node:internal/modules/cjs/loader:827:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 undefined

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

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

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

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

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

guest

回答1

0

ベストアンサー

Node.jsのパッケージを読み込んでいるため、app.jsはフロントでは実行されないので、ブラウザで見ているとすれば、それが原因でundefinedとなるのではないでしょうか?(どこがundefinedとなっているか不明なため憶測ですがおそらくそうです)
そのため、バックエンド側でapp.jsを実行する必要があります。
App.jsはどう実行しようとしているのでしょうか?

投稿2023/01/29 10:11

yama_u

総合スコア16

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

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

KIND

2023/01/29 10:32

回答ありがとうございます!! app.jsはターミナルを用いて実行しました。 質問の内容を変更し、回答に対する返信欄を作ったのでそちらを見ていただけると助かります。 返信お待ちしております!!
KIND

2023/01/29 11:02

ターミナル中にエラーが出ているのに気がついて、エラーを調べたところ https://geniusium.hatenablog.com/entry/2022/08/20/210202 このサイトを見つけました。 localhostを127.0.0.1に変更したところ、実行することに成功しました。 ありがとうございました!!!!!
yama_u

2023/01/30 08:18

確認おくれました。。 よかったです!その修正は初めて見たので、参考になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問