Предупреждение об устаревании: прослушивание событий в классе Db устарело и будет удалено в следующей основной версии.

Я использую mongoose и mocha для проектирования схемы MongoDB и разработки API. Я получаю это предупреждение... что это значит, как это повлияет на меня и как это исправить??

Ниже фактического текста предупреждения:

(узел: 9872) Предупреждение об устаревании: прослушивание событий в классе Db устарело и будет удалено в следующей основной версии.


person Kritagya Khandelwal    schedule 13.02.2021    source источник
comment
Отвечает ли это на ваш вопрос? Как я могу удалить это предупреждение об устаревании в MongoDB и почему это происходит?   -  person Peter O.    schedule 19.02.2021


Ответы (6)


ОБНОВЛЕНИЕ

[email protected] отсутствует.

Просто обновите драйвер mongodb и mongoose:

npm i mongodb mongoose

Это вызвано нативным драйвером [email protected], который используется mongoose.

#1 Вы можете понизить версию mongodb до версии 3.6.3 (описано здесь).

#2 Или понизьте версию mongoose с 5.11.16 до 5.11.15:

npm uninstall mongoose
npm install [email protected]

#3 Или просто дождитесь выпуска [email protected].

person kmgt    schedule 14.02.2021
comment
Я думаю, вы имели в виду 3.6.4, а не 2.6.4 - person Amrita Yadav; 15.02.2021
comment
Опечатка. 3.6.4 конечно. - person kmgt; 15.02.2021
comment
@kmgt Я получаю эту ошибку с версией mongoose ^5.10.12 и версией Mongodb 4.4 Что делать? Все еще нужно использовать версию мангуста 5.11.15? - person Avani Khabiya; 17.02.2021
comment
Хорошо. Я считал это версией MongoDB, это версия драйвера mongodb. Да, установленная версия драйвера mongodb — 3.6.3. - person Avani Khabiya; 17.02.2021
comment
@kmgt можно ли игнорировать это предупреждение или мне нужно понизить версию Mongoose? Поскольку переход на более раннюю версию драйвера Mongodb невозможен, у меня уже установлена ​​версия 3.6.3. - person Avani Khabiya; 17.02.2021
comment
Я понимаю. МонгоДБ 4.4! Вы можете игнорировать это ссылка. - person kmgt; 17.02.2021
comment
Ссылка, которой вы поделились, содержит какое-то другое предупреждение Warning: Accessing non-existent property ‘MongoError’ of module exports inside circular dependency. Последний комментарий, который включает указанную выше ошибку, еще не подтвержден заинтересованным лицом Mongodb. - person Avani Khabiya; 17.02.2021
comment
Есть зависимость. Изучите это. - person kmgt; 17.02.2021

Для всех, кто ищет ответ на этот вопрос, на форуме Mongodb размещен вопрос, и ответ подтвержден заинтересованным лицом Mongodb.

Ответ, данный @kmgt, правильный. Ошибку можно безопасно игнорировать, и она будет исправлена ​​в следующем выпуске драйвера Mongodb Nodejs или поможет понижение версии Mongoose до 5.11.15.

(node:44612) DeprecationWarning: Прослушивание событий в классе Db устарело и будет удалено в следующей основной версии< /а>

person Avani Khabiya    schedule 19.02.2021

Та же ошибка введите здесь описание изображения

Но насколько я знаю, это ошибка совместимости с новой версией, после поиска этой текущей версии ошибки я нашел это сессия комментариев, и, согласно одному из них, можно безопасно игнорировать это предупреждение.

person Maker    schedule 14.02.2021
comment
Да, но эти предупреждения (я видел подобные в других пакетах) создают много шума в командной строке. - person Wayne Smallman; 17.02.2021

Если вы используете mongoose версии 5.11.16 или выше, вы увидите эту ошибку. Вы можете решить эту проблему, понизив ее до версии 5.11.15.

npm удалить мангуста

npm я мангуст @ 5.11.15

Хотя это обсуждается в сообществе и во многих разделах комментариев, и это предупреждение из-за ошибки совместимости, и его игнорирование не повредит. Предполагается, что они исправят это в следующем обновлении.

person hersheys17    schedule 18.02.2021

Вы можете использовать версию мангуста 5.11.13

person SEYED AHMAD    schedule 14.02.2021
comment
Достаточно перейти на мангуст 5.11.15. Согласно журналу изменений, обновление до драйвера mongodb 3.6.4 произошло в 5.11. .16. - person Michael Geier; 16.02.2021

Итак, я нашел решение этой проблемы.

Задача: загрузить изображение в mongoDB в виде двоичных данных, используя ведра, куски и т. д.

URL ссылки

Код:

const express = require("express");
const router = express.Router();
const User = require('../models/user');
const grid = require('gridfs-stream');
const GridFsStorage = require('multer-gridfs-storage');
const util = require("util");
const crypto = require('crypto');
const path = require('path');
const methodOverride = require('method-override');
const bodyParser = require('body-parser');
const dotenv = require("dotenv").config({path: "./config/config.env"});
const multer = require('multer');


const storage = new GridFsStorage({
    url: process.env.MONGO_URI,

    options: {
        useUnifiedTopology: true
    },
    file: (req, file) => {
        return new Promise((resolve, reject) => {
            crypto.randomBytes(16, (err, buf) => {
                if (err) {
                    return reject(err);
                }
                const filename = buf.toString('hex') + path.extname(file.originalname);
                const fileInfo = {
                    filename: filename,
                    bucketName: 'uploads'
                };
                resolve(fileInfo);
            });
        });
    }


});
var uploadFile = multer({storage: storage}).single("file");
var uploadFilesMiddleware = util.promisify(uploadFile);
module.exports = uploadFilesMiddleware;

Проблема:

Предупреждение об устаревании Прослушивание событий в классе Db объявлено устаревшим и будет удалено в следующей основной версии.

Исправить:

Так что скорее всего проблема не в вас. Он находится в самой упаковке. (посмотрите ссылку выше)

  1. Перейдите в папку node_modules (это папка с большим количеством файлов) в вашем приложении node_js.

  2. Перейти к multer-gridfs-storage (внутри node_modules)

  3. Перейдите в папку lib (внутри multer-gridfs-storage)

  4. Откройте gridfs.js

  5. Найдите этот комментарий (// Это все события, которые выдают ошибки)

  6. Заменить это

    this.db .on('ошибка', errEvent) .on('parseError', errEvent) .on('timeout', errEvent) .on('close', errEvent);

С этим

this.client
    .on('error', errEvent)
    .on('parseError', errEvent)
    .on('timeout', errEvent)
    .on('close', errEvent);

В основном измените замените «db» на «client».

Вы также можете перейти на официальную страницу и проверить текущие проблемы, там четко указано, что у multer-gridfs-storage есть проблема с дебрикацией.

Ссылка на выпуск

person koshur    schedule 13.06.2021