前提
プログラミング初学者です。
初投稿ですので至らない点が多いかもしれませんがよろしくお願いします。
また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
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/01/29 10:32
2023/01/29 11:02
2023/01/30 08:18