programing

사용 안 함 경고: DB 클래스의 이벤트 수신이 사용되지 않으며 다음 주 버전에서 제거됩니다.

i4 2023. 5. 6. 14:02
반응형

사용 안 함 경고: DB 클래스의 이벤트 수신이 사용되지 않으며 다음 주 버전에서 제거됩니다.

MongoDB 스키마 설계 및 API 개발을 위해 mongoose와 mocha를 사용하고 있습니다. 이 경고를 받고 있습니다.이것은 무엇을 의미하고, 그것이 나에게 어떻게 영향을 미칠 것이며, 해결책은 무엇입니까?

실제 경고 텍스트 아래:

(node:9872) Deprecommunication Warning: DB 클래스의 이벤트 수신이 더 이상 사용되지 않으며 다음 주 버전에서 제거됩니다.

갱신하다

mongodb@3.6.5가 나왔습니다.

mongodb 드라이버와 mongoose를 업데이트하기만 하면 됩니다.

npm i mongodb mongoose

이 문제는 mongoose에서 사용하는 mongodb@3.6.4 네이티브 드라이버에 의해 발생합니다.

#1 mongodb를 3.6.3 버전(여기서 설명)으로 다운그레이드할 수 있습니다.

#2 또는 몽구스를 5.11.16에서 5.11.15로 다시 다운그레이드:

npm uninstall mongoose
npm install mongoose@5.11.15

#3 또는 mongodb@3.6.5가 나오기를 기다리기만 하면 됩니다.

이에 대한 답을 찾는 모든 사람들에게 Mongodb 포럼에 올라온 질문이 있으며 Mongodb 관계자가 그 답을 인정합니다.

@kmgt가 준 답은 맞습니다.오류는 안전하게 무시할 수 있으며 향후 릴리스의 Mongodb Nodejs 드라이버에서 수정되거나 Mongoose 버전을 5.11.15로 다운그레이드하면 도움이 됩니다.

(노드:44612) 사용 중지 경고: DB 클래스의 이벤트 수신이 사용되지 않으며 다음 주 버전에서 제거됩니다.

동일 오류

하지만 새로운 버전 호환성 버그로 알고 있는 한, 이 버그 버전에 대해 검색한 후 이 댓글 세션을 찾았고, 그 중 하나에 따르면 이 경고를 무시해도 무방합니다.

mongoose 버전 5.11.16 이상을 사용하는 경우 이 오류가 표시됩니다.이 문제는 버전 5.11.15로 다운그레이드하여 해결할 수 있습니다.

npm mongoose 제거

npm 몽구스@5.11.15

비록 이것이 커뮤니티와 많은 댓글 섹션에서 논의되고 있고 호환성 버그로 인한 경고이며 무시해도 나쁠 것이 없습니다.그들이 다음 업데이트에서 그것을 수정할 것을 제안합니다.

mongoose 버전 5.11.13을 사용할 수 있습니다.

그래서 이 문제에 대한 해결책을 찾았습니다.

작업: 버킷, 청크 등을 사용하여 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_js 응용 프로그램에서 node_modules(파일이 많은 하나의 폴더) 폴더로 이동합니다.

  2. multter-gridfs-storage(node_modules 내부)로 이동합니다.

  3. lib 폴더(multer-gridfs-storage 내부)로 이동합니다.

  4. gridfs.js 열기

  5. 이 댓글 찾기 (// 오류가 발생하는 모든 이벤트입니다)

  6. 변경 내용

    이 .db .on('error', 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'로 바꿉니다.

공식 페이지로 이동하여 현재 문제를 확인할 수도 있습니다. Multter-gridfs-storage에 탈부착 경고 문제가 있다고 분명히 언급되어 있습니다.

이슈 링크

언급URL : https://stackoverflow.com/questions/66190532/deprecationwarning-listening-to-events-on-the-db-class-has-been-deprecated-and

반응형