JS не может запросить базу данных MySQL. ОШИБКА: подключение.запрос не является функцией

#node.js #express #ms-access #odbc

#javascript #mysql #node.js #discord.js

Вопрос:

Пытаюсь запросить мою базу данных MySQL, но не могу, потому что получаю TypeError: connection.query is not a function сообщение об ошибке. У кого-нибудь есть идеи, почему? Я понятия не имею, почему это происходит.

database.js

 const fs = require('fs'); // node.js file system module
require('dotenv').config(); // stores tokens, keys, passwords and other info
const Discord = require('discord.js'); // links discord.js api to file
const database = require('./database.js');

const client = new Discord.Client(); // creates bot user

let connection;
(async () => {
    connection = await require('./database.js');
    await client.login(process.env.TOKEN); // bot goes from offline to online
})();

client.once('ready', () => console.info(`[${date.toLocaleString()}] INFO | Ready, logged in as ${client.user.tag} (${client.user.id})n------------------------`));

client.on('guildCreate', async guild => {
    try {
        await connection.query(`INSERT INTO guildInfo VALUES('${guild.id}', '${guild.ownerID}')`);
        await connection.query(`INSERT INTO guildConfig (guildID) VALUES('${guild.id}')`);
    } catch(err) {
        console.error(err);
    }
});
 

database.js

 require('dotenv').config();
const mysql = require('mysql2/promise');

date = new Date();
mysql.createConnection({
    user: process.env.USER,
    password: process.env.PASSWORD,
    database: process.env.DATABASE
}).then(connection => console.info(`[${date.toLocaleString()}] INFO | Waiting for input/changes to coden------------------------`)).catch(err => console.error(err));
 

Ошибка

 TypeError: connection.query is not a function
    at Client.<anonymous> (C:UsersPatrick LawrenceDesktopSynthindex.js:43:20)
    at Client.emit (events.js:315:20)
    at Object.module.exports [as GUILD_CREATE] (C:UsersPatrick LawrenceDesktopSynthnode_modulesdiscord.jssrcclientwebsockethandlersGUILD_CREATE.js:33:14)
    at WebSocketManager.handlePacket (C:UsersPatrick LawrenceDesktopSynthnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:UsersPatrick LawrenceDesktopSynthnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:UsersPatrick LawrenceDesktopSynthnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
    at WebSocket.onMessage (C:UsersPatrick LawrenceDesktopSynthnode_moduleswslibevent-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:UsersPatrick LawrenceDesktopSynthnode_moduleswslibwebsocket.js:797:20)
    at Receiver.emit (events.js:315:20)
 

Комментарии:

1. database.js похоже, ничего не экспортирует.

2. @aioros спасибо! как мне его экспортировать?

Ответ №1:

Просто вы не экспортируете соединение database.js .

После создания соединения присвойте его переменной like const connection и введите внизу файла module.exports = connection .