ディレクトリ構造
ソースコード
JavaScript
1// index.js 2 3const express = require("express"); 4const app = express(); 5const cors = require("cors"); 6const mysql = require("mysql"); 7 8const db = mysql.createConnection({ 9 host: "localhost", 10 user: "root", 11 password: "zuvm8152", 12 database: "Kiroku" 13}); 14 15app.use(express.json()); 16app.use(cors()); 17 18// Routers 19const usersRouter = require("./routes/Users"); 20app.use("/auth", usersRouter); 21 22app.listen(3001, () => { 23 console.log("Server running on port 3001"); 24}); 25 26module.exports = db;
JavaScript
1// Users.js 2 3const express = require("express"); 4const router = express.Router(); 5const db = require('../index'); 6const bcrypt = require("bcrypt"); 7 8router.post("/", async (req, res) => { 9 const {username, password} = req.body; 10 const sqlInsert = "INSERT INTO Users (username, password) VALUES (?, ?)"; 11 bcrypt.hash(password, 10).then((hash) => { 12 db.query(sqlInsert, [username, hash], (err, result) => { 13 console.log(result); 14 }); 15 }); 16}); 17 18module.exports = router;
エラーコード
(node:83857) Warning: Accessing non-existent property 'query' of module exports inside circular dependency
(Use node --trace-warnings ...
to show where the warning was created)
(node:83857) UnhandledPromiseRejectionWarning: TypeError: db.query is not a function
at /Users/k20081kk/App-Project/Kiroku/server/routes/Users.js:10:8
(node:83857) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:83857) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
概要
ユーザ登録機能を作ろうとしています。
User.jsで入力されたユーザーネームとパスワードをデータベースに保存したいのですが、db.query is not a function
となり、MySQLとの接続が上手くいきません。
なぜ上手くいかないのかわからないので、教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。