@aquapendente

Не работает async function. Node JS. Что делать?

Использую Node.js и MongoDB. У меня есть есть vk.js который отвечает за работу бота ВК. После написания сообщения выдается ошибка TypeError: db.newUserRegister is not a function. Также есть ядро которое включает как раз таки vk.js и database.js Функция newUserRegister не работает. config.js тоже есть и он работает нормально.

vk.js:

const {VK} = require('vk-io')
const config = require('../config/config.json')
const db = require('./MongoDB/database.js')

console.log(config.prefix + 'Модуль VK запущен')

const vk = new VK ({
    token: config.token,
    apiVersion: '5.131'
})

vk.updates.on('message', async function(message) {
    if (message.text == null || message.isGroup == true || message.text == 'undefined' || message.isOutbox) return;
    if (message.senderId == config.admins) {
        console.log('Сообщение от администратора! ' + message.text)
        exports.message = message.text;
        await db.newUserRegister(); //вот это выдает ошибку
        return;
    } else {
        
    }
}) /* vk updates message */

async function initialize() {
    await vk.updates.startPolling();
};

module.exports = {
    vk: vk,
    initialize: initialize
};


database.js:

const {MongoClient} = require('mongodb')
const vk = require('../vk.js')
const config = require('../../config/config.json')

const client = new MongoClient(config.db)

async function initialize() {
    try {
        await client.connect()
        console.log(config.prefix + 'Соединение установлено')
    } catch (e) {
        console.log(e)
    }
};

async function newUserRegister() {
    const users = client.db().collection('users')
    await users.insertOne({name: vk.message})
    console.log("Сообщение " + vk.message + " успешно добавлено в коллекцию users")
};

module.exports = {
    initialize: initialize,
    newUserRegister: newUserRegister
}


app.js:

const db = require('./lib/MongoDB/database.js')
const vk = require('./lib/vk.js')
const config = require('C:/Users/User/Desktop/MongoDBBot/config/config.json')

async function main() {
    await vk.initialize()
    console.log(config.prefix + 'Отслеживание началось')
    await db.initialize()
    console.log(config.prefix + 'База данных успешно запущена')
}
main()
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
У тебя похоже циклические ссылки: vk.js запрашивает database.js и наоборот. В таких случаях кто первый встал того и тапки.
Выноси общий функционал в отдельный файл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы