사용 안 함 경고: 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에 이미지를 이진 데이터로 업로드합니다.
코드:
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 클래스의 이벤트 수신이 더 이상 사용되지 않으며 다음 주 버전에서 제거됩니다.
수정:
그래서 아마도 문제는 당신 때문이 아닐 것입니다.그것은 패키지 자체에 있습니다.(위의 참조 링크를 확인하십시오.)
node_js 응용 프로그램에서 node_modules(파일이 많은 하나의 폴더) 폴더로 이동합니다.
multter-gridfs-storage(node_modules 내부)로 이동합니다.
lib 폴더(multer-gridfs-storage 내부)로 이동합니다.
gridfs.js 열기
이 댓글 찾기 (// 오류가 발생하는 모든 이벤트입니다)
변경 내용
이 .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
'programing' 카테고리의 다른 글
사용 문 안에 예외가 발생해도 Dispose가 계속 호출됩니까? (0) | 2023.05.06 |
---|---|
파이썬 문자열 앞에 있는 b 접두사는 무엇을 의미합니까? (0) | 2023.05.06 |
커넥터 버전이 변경된 경우 SpringBoot 앱이 MariDB에 연결할 수 없음 (0) | 2023.05.01 |
Azure 함수가 ILogger를 바인딩하지 못함 (0) | 2023.05.01 |
Windows의 Git 저장소에 있는 디렉터리 무시 (0) | 2023.05.01 |