๊ธฐ๋ฅ ์ ์์ฒญํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
๋ฒ๊ทธ.
ํ์ฌ ํ๋์ ๋ฌด์์ ๋๊น?
Mongoose 5.7.1๋ก ์ ๋ฐ์ดํธํ ํ ๋ค์ ๊ฒฝ๊ณ ๊ฐ ๋ํ๋ฌ์ต๋๋ค.
(node:41563) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
at parseFn (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/operations/connect.js:312:5)
at parseConnectionString (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/core/uri_parser.js:628:3)
at connect (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/operations/connect.js:266:3)
at ConnectOperation.execute (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/operations/connect.js:191:5)
at executeOperation (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/operations/execute_operation.js:83:26)
at MongoClient.connect (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/node_modules/mongodb/lib/mongo_client.js:216:10)
at Promise (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/lib/connection.js:632:12)
at Promise._execute (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/bluebird/js/release/debuggability.js:313:9)
at Promise._resolveFromExecutor (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/bluebird/js/release/promise.js:488:18)
at new Promise (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/bluebird/js/release/promise.js:79:10)
at NativeConnection.Connection.openUri (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/lib/connection.js:629:19)
at Mongoose.connect (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/mongoose/lib/index.js:327:15)
at Object.connect (/Users/tschaffter/dev/PHCCollaborationPortal/server/app.js:17:44)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Module._compile (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/pirates/lib/index.js:99:24)
at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Object.newLoader [as .js] (/Users/tschaffter/dev/PHCCollaborationPortal/node_modules/pirates/lib/index.js:104:7)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/Users/tschaffter/dev/PHCCollaborationPortal/server/index.js:12:28)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
MongoDB ๋ ํ๋ฆฌ์นด ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ๋ฉ์์ง์์ ์ ์ํ ๋๋ก ๋ด mongoose ๊ตฌ์ฑ ๊ฐ์ฒด์ useUnifiedTopology: true
๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ค์์ ๋ชฝ๊ตฌ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ๊ณ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
``` ๋ชฝ๊ณ : {
์ต์
: {
// https://mongoosejs.com/docs/deprecations.html
useNewUrlParser: ์ฐธ,
useFindAndModify: ๊ฑฐ์ง,
useCreateIndex: ์ฐธ,
useUnifiedTopology: ์ฐธ,
์ฌ์ฐ๊ฒฐ ์๋: 30,
reconnectInterval: 500, // ms ๋จ์
}
},
and here is where I used this `mongo.options` object:
// ๋ชฝ๊ณ DB์ ์ ์
const mongooseConnectionPromise = mongoose.connect(config.mongo.uri, config.mongo.options);
mongoose.connection.on('์ค๋ฅ', ์ค๋ฅ => {
console.error( MongoDB connection error: ${err}
);
ํ๋ก์ธ์ค.exit(-1); // eslint-disable-line no-process-exit
});
The warning is gone but the issue is that mongoose is now no longer able to connect:
MongoDB ์ฐ๊ฒฐ ์ค๋ฅ: MongoTimeoutError: 30000ms ํ ์๋ฒ ์ ํ ์๊ฐ ์ด๊ณผ
[nodemon] ์ฑ ์ถฉ๋ - ์์ํ๊ธฐ ์ ์ ํ์ผ ๋ณ๊ฒฝ ๋๊ธฐ ์ค...
Here is how I run MongoDB using docker during development:
๋์ปค ์คํ -p ${MONGO_PORT}:${MONGO_PORT} --์ด๋ฆ mongo -d mongo
```
ํ์ฌ ๋์์ด ๋ฒ๊ทธ์ธ ๊ฒฝ์ฐ ์ฌํ ๋จ๊ณ๋ฅผ ์ ๊ณตํ์ญ์์ค.
์ ์ฐธ์กฐ
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
Mongoose๋ mongoose๊ฐ ์ ์ํ๋ ๋๋ก useUnifiedTopology: true
๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๋๋ก ์คํํด์ผ ํฉ๋๋ค.
์ฌ์ฉ ์ค์ธ Node.js, Mongoose ๋ฐ MongoDB์ ๋ฒ์ ์ ๋ฌด์์ ๋๊น?
๋
ธ๋: v10.16.2
๋ชฝ๊ตฌ์ค: 5.7.1(์ต์ )
MongoDB: db ๋ฒ์ v4.2.0
์ด๋ค ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํฉ๋๊น? ๋ํ '์๋ฒ ์ ํ ์๊ฐ ์ด๊ณผ' ๋ฉ์์ง์ ๋ํ ์คํ ์ถ์ ์ด ์์ต๋๊น?
์ ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋ณด๊ณ ํ๊ธฐ ์ํด ์ฌ๊ธฐ๋ฅผ ํ๊ณ ๋ค์์ต๋๋ค.
๋ ์์ ์ Docker ๋๋ VM์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ํ ์ด๊ฒ์ด ํญ์ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ง๋ ์์ง๋ง ์ค๋ ์๊ฐ ์ด๊ณผ(30k)๋ก ์ธํด ๋ด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์์ผ๋ฉฐ useUnifiedTopology
ํ๋๊ทธ๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฌธ์ ๊ฐ ์ฆ์ ํด๊ฒฐ๋์์ต๋๋ค. .
Atlas ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๊ณ ์์ต๋๋ค.
๋ชฝ๊ตฌ์ค๋ 5.7.1์
๋๋ค
MongoDb๋ 3.3.2์
๋๋ค.
๋
ธ๋๋ 12.9.1์
๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฐ๊ฒฐํฉ๋๋ค.
mongoose.createConnection(uri,
{
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true, // commented out currently
dbName: db_name
});
๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
import mongoose from 'mongoose';
import * as db_conns from '../db-connections'; // this is an object of connections generated via createConnection
// ... schema definition, for a model called 'article' from a collection called 'article'
// `site_content` is the name of a connection
export default db_conns.connections.site_content.model(`article`, schema, `article`);
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ธ์ต๋๋ค.
// ...
await query.model.find(query_expr).limit(30); // query_expr can change, however even an empty expression ({}) will cause the same issue
// ...
find
ํธ์ถ์ด ์ค๋จ๋๊ณ ์๊ฐ ์ด๊ณผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
@vkarpov15 ์ ๋ MongoDB v4.2.0์ ์ ๊ณตํ๋ ์ต์ mongo
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
https://hub.docker.com/_/mongo
์ค๋ฅ๊ฐ ๋ฌด์์๋ก ๋ฐ์ํ์ง๋ง { useUnifiedTopology: true } ๋ฅผ ์ถ๊ฐํ ํ์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์คํ ์๋ชป๋ ๊ฒ์ด ์์ต๋๋ค. ์ต์ mongo ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ชฝ๊ตฌ์ค
.connect(process.env.MONGO_URI, {
useUnifiedTopology: ์ฐธ,
useNewUrlParser: ์ฐธ,
})
.then(() => console.log('DB ์ฐ๊ฒฐ๋จ!'))
.catch(์ค๋ฅ => {
console.log(์ค๋ฅ, err.message);
});
์์๋๋ฉด ์ฝ์์ ๋์ฐฉํฉ๋๋ค.
[ํจ์: ์ค๋ฅ] { stackTraceLimit: 16, prepareStackTrace: undefined } acccluster-shard-00-01-xx47j.mongodb์ ๋ํ ์ฐ๊ฒฐ 0. ๊ทธ๋ฌผ:27017 ํ์
์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๋์กฐ์ฐจ๋ ์ง๊ธ์ด ๋ฌธ์ ์ ์ง๋ฉด ํด ์์ต๋๋ค ...
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ๋ ์ฃผ๋์ด ํ๋ก๊ทธ๋๋จธ์ด๊ณ nodejs-express-graphql-mongoose-mongodbAtlas๋ฅผ ์ฒ์ ์ฌ์ฉํฉ๋๋ค.
(๋
ธ๋:9392) UnhandledPromiseRejectionWarning: MongoTimeoutError: 30000ms ํ์ ์๋ฒ ์ ํ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค.
Timeout.setTimeout์์ (MyAppPathgraphql2node_modulesmongodblibcoresdamtopology.js:850:16)
์๊ฐ ์ด๊ณผ ์(timers.js:436:11)
tryOnTimeout์์ (timers.js:300:5)
listOnTimeout์์ (timers.js:263:5)
Timer.processTimers์์ (timers.js:223:10)
(node:9392) UnhandledPromiseRejectionWarning: ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์์ด ๊ฑฐ๋ถ๋์์ต๋๋ค. ์ด ์ค๋ฅ๋ catch ๋ธ๋ก ์์ด ๋น๋๊ธฐ ํจ์ ๋ด๋ถ๋ฅผ ๋์ง๊ฑฐ๋ .catch()๋ก ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์์ ๊ฑฐ๋ถํ์ฌ ๋ฐ์ํ์ต๋๋ค. (๊ฑฐ๋ถ ID: 1)
(node:9392) [DEP0018] DeprecationWarning: ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ ์ฝ์ ๊ฑฐ๋ถ๋ 0์ด ์๋ ์ข
๋ฃ ์ฝ๋๋ก Node.js ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํฉ๋๋ค.
์ด๋ฒคํธ.js:174
๋์ง๋ค ์ด; // ์ฒ๋ฆฌ๋์ง ์์ '์ค๋ฅ' ์ด๋ฒคํธ
^^
์ค๋ฅ: ECONNRESET ์ฝ๊ธฐ
TLSWrap.onStreamRead์์(internal/stream_base_commons.js:111:27)
๋ค์ ์์น์์ '์ค๋ฅ' ์ด๋ฒคํธ ๋ฐ์:
TLSSocket์์.
Object.onceWrapper์์ (events.js:286:20)
TLSSocket.emit์์(events.js:198:13)
EmmitErrorNT์์(๋ด๋ถ/์คํธ๋ฆผ/destroy.js:91:8)
emitErrorAndCloseNT์์ (internal/streams/destroy.js:59:3)
process._tickCallback์์ (๋ด๋ถ/ํ๋ก์ธ์ค/next_tick.js:63:19)
useUnifiedTopology
ํ์ฑํํ ํ์๋ ํ๋ก๋์
์๋ฒ์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout.setTimeout [as _onTimeout] (/opt/app/node_modules/mongodb/lib/core/sdam/topology.js:850:16)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
๋๋ ์ง๊ธ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ๋ง๋๊ธฐ ์์ํ๋ค
MaxListenersExceededWarning: ๊ฐ๋ฅํ EventEmitter ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๊ฐ์ง๋์์ต๋๋ค. 11๊ฐ์ topologyDescriptionChanged ๋ฆฌ์ค๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
์ด ๊ฒฝ๊ณ ๋ฅผ ๊ฒ์ํ์ ๋ ์ด mongoDB ๋ฌธ์๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
https://jira.mongodb.org/browse/NODE-2123
๊ทธ๊ฒ์ ๋ ์ค๋ฅ๋ฅผ ๋ํ๋
๋๋ค
"์๋ฒ ์ ํ ์๊ฐ ์ด๊ณผ" ๋ฐ "MaxListenersExceededWarning" ๋ฐ ๋ ์ค๋ฅ ๋ชจ๋ ํตํฉ ํ ํด๋ก์ง ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๊ฒ์
๋๋ค. ๋๋ ์ด๊ฒ์ด ๊ฒฐ์ฝ ์ธ๊ธ๋์ง ์์ ํ๊ธฐ์ ์ธ ๋ณํ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด ๋ผ์ด๋ธ ์๋ฒ์์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ { useUnifiedTopology: false }๋ฅผ ์ค์ ํ ์ ๋ฐ์ ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ์ ๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ์ ์ง์คํ๊ณ ํด๊ฒฐํ๊ฑฐ๋ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์์ ์ ๊ณตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ๋ํ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ป๊ณ ์๋ค (์๋ฒ ์ ํ์ 30000 MS์ MaxListenersExceededWarning ํ ์๊ฐ ์ด๊ณผ :. ๊ฐ๋ฅํ EventEmitter ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์ง ๋ 11)์ด ๋ด๊ฐ ์๊ฐ์ด ์ต์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋๋ก useUnifiedTopology๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ.
์ด๊ฑฐ ์ฌ๋์ ํด๋ดค๋๋ฐ ์๋๋๋ผ๊ตฌ์. ๋ช ๊ฐ์ง ์ต์ ์ ์๋ํ์ต๋๋ค.
1) ์ฟผ๋ฆฌ ์ง์ ์ ์๋ฒ ์ข ๋ฃ
2) ์ฐ๊ฒฐ์ด ๋๊ธด ์ํ์์ ์ฟผ๋ฆฌํ๊ธฐ
3) ์ฟผ๋ฆฌ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํ
์ด๋ค ๊ฒฝ์ฐ์๋ ์์ง ์ด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ณด์ง ๋ชปํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ ์ ์์ต๋๊น?
'use strict';
const mongoose = require('mongoose');
run().catch(err => console.log(err));
async function run() {
mongoose.set('useUnifiedTopology', true);
mongoose.set('useNewUrlParser', true);
await mongoose.connect('mongodb://localhost:27017/test');
const Model = mongoose.model('Test', new mongoose.Schema({ name: String }));
console.log('Query...');
await Model.findOne();
console.log('Done');
}
๋๋ ์ต์ํ ์ฌ์ฉ ์ค์ธ Mongoose ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ธ์. ๋ ๋ฆฝ ์คํํ ์๋ฒ, ๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ ๊ทธ๋ฆฌ๊ณ Mongoose๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์๋์ง ์๋๋ฉด ๋ค๋ฅธ npm ๋ชจ๋์ ํตํด ์ฌ์ฉํ๊ณ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ด mongoose์ ๋ฌธ์ ๊ฐ ์๋๋ผ Mongo ์์ฒด์ ๋ฌธ์ ๋ผ๊ณ ์๋นํ ํ์ ํฉ๋๋ค.
@ vkarpov15 , ๋ด ์๊ฒฌ์ ์ฐธ์กฐํ์ญ์์ค. ๊ฑฐ๊ธฐ์ ๋ด ํ๊ฒฝ์ ์ค๋ช ํ์ต๋๋ค. ์ ๋ ๋ชฝ๊ตฌ์ค๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@vkarpov15 ์ด ๋ฌธ์ ๋ ์๋ฒ๊ฐ ์คํ ์ค์ผ ๋ 2-3์ผ๋ง๋ค ๋ฌด์์๋ก ๋ํ๋๋ฏ๋ก ์ฝ๋๋ฅผ ์ ๊ณตํ๋๋ผ๋ ์๋ฒ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฌ๋์ด ์์ต๋๊น?
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฌ๋์ด ์์ต๋๊น?
๋น๋ถ๊ฐ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Mongo๋ ์์ผ๋ก ๋นํ์ฑํ๋ ๊ฒ์ด๋ผ๊ณ ๊ฒฝ๊ณ ํ์ง๋ง ๋น๋ถ๊ฐ์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฌ๋์ด ์์ต๋๊น?
๋น๋ถ๊ฐ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Mongo๋ ์์ผ๋ก ๋นํ์ฑํ๋ ๊ฒ์ด๋ผ๊ณ ๊ฒฝ๊ณ ํ์ง๋ง ๋น๋ถ๊ฐ์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
useUnifiedTopology: true ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ฑ์ด ์ค์ง๋์์ต๋๋ค.
๋ชฝ๊ตฌ์ค ๋ฒ ๋ฆฌ์จ: 5.7.4
useUnifiedTopology
์ฃผ์์ ๋ฌ์ ๋ด ๋น๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ํ (๋ถ๋ช
ํ) ๋ฌด์์ ๋ฐฉ์์ผ๋ก ๋ฐ์ํฉ๋๋ค.
@rpedroni ์ฌํ๊ฒ๋, ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ์ํ ๊ฒ์ด ์๋๋๋ค...
์ฌ๊ธฐ์์๋ ์ผ์ด๋๊ณ ์์ต๋๋ค. ํ๋ก๋์ ์๋ฒ๋ ๋ค์ ๋ฉ์์ง๋ก ์๋ตํฉ๋๋ค. ์ง๊ธ์ useUnifiedTopology์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
MongoDB ์ฐ๊ฒฐ ์ต์
var options = {
useCreateIndex: true,
useNewUrlParser: true,
useFindAndModify: false,
useUnifiedTopology: true,
promiseLibrary: global.Promise
};
์๋ฒ ๋ก๊ทธ
MongoTimeoutError: Server selection timed out after 30000 ms
Oct 16 12:56:31 app/web.1: at Timeout.setTimeout (/app/node_modules/mongodb/lib/core/sdam/topology.js:850:16)
Oct 16 12:56:31 app/web.1: at Shim.applySegment (/app/node_modules/newrelic/lib/shim/shim.js:1424:20)
Oct 16 12:56:31 app/web.1: at Timeout.wrappedCallback [as _onTimeout] (/app/node_modules/newrelic/lib/shim/shim.js:1281:21)
Oct 16 12:56:31 app/web.1: at ontimeout (timers.js:436:11)
Oct 16 12:56:31 app/web.1: at tryOnTimeout (timers.js:300:5)
Oct 16 12:56:31 app/web.1: at listOnTimeout (timers.js:263:5)
Oct 16 12:56:31 app/web.1: at Timer.processTimers (timers.js:223:10)
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ผ๋ฉฐ ๋ชฝ๊ตฌ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. Node.js์ฉ MongoDB ๋๋ผ์ด๋ฒ ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ๋ https://jira.mongodb.org/browse/NODE-2249 ์์๋ ๋ณด๊ณ ๋์์ต๋๋ค.
์ค๋ ๊ณต๊ฐ๋ ๋๋ผ์ด๋ฒ ๋ฒ์ 3.3.3์ MongoTimeoutError
์ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ํ ๋ฒ๊ทธ ์์ ์ผ๋ก ์ธํด ๋๋ผ์ด๋ฒ๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ์ค๋ฅ๋ ๋๋ผ์ด๋ฒ๊ฐ ์ง์ ๋ ์์ (๋๋ ์ด๊ธฐ ์ฐ๊ฒฐ)์ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์ ์ถฉ์กฑํ๋ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ์ฐ๊ฒฐ ๋ฌธ์์ด์ด ์๋ชป๋์๊ฑฐ๋ ํด๋ฌ์คํฐ์ ๋ ธ๋๊ฐ ๋ค์ด๋๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๊ฐ ์์ ์ ์์ต๋๋ค. ๋๋ผ์ด๋ฒ์ ์ต์ v3.3.3์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉด ๋ฌธ์ ๋ฅผ ์ถ๊ฐ ์กฐ์ฌํ๋ ๋ฐ ๋์์ด ๋๋ MongoTimeoutError์ ํจ๊ป ์๋ก์ด ์ด์ ํ๋๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ํ ์ด ๋ฒ์ ์๋ ๋ณต์ ์ธํธ์ ๊ตฌ์ฑ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ด๊ธฐ ์ฐ๊ฒฐ ์ ์๊ฐ ์ด๊ณผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ฒ๊ทธ ์์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋๋ผ์ด๋ฒ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
https://jira.mongodb.org/browse/NODE-2249?focusedCommentId=2485028&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment -2485028์์ ์ธ์ฉ
Mongo Atlas์ ์ฐ๊ฒฐํ์ฌ ๊ฐ๋ฐ ๋ฐ ํ๋ก๋์ ๋ชจ๋์์ ๋์ผํ๊ฒ ๋ฐ์ํฉ๋๋ค.
๋ํ mongodb ์ํ๋ผ์ค์ ์ฐ๊ฒฐํ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ํ๋ผ์ค๊ฐ ์๋ฒ๋ฅผ ๋ค์ ์์ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ด์ ์ ์ฌํ ์์ ์ ์ํํ ํ์ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋์ ๋๋ ์ฌ์ ํ ๋ณต์ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ๋ก์ปฌ๋ก ์ฌํํ ์ ์์ต๋๋ค. ์๋ ์คํฌ๋ฆฝํธ๋ ๋ณต์ ๋ณธ ์ธํธ ์ฅ์ ์กฐ์น ๋๋ ๊ธฐ๋ณธ ์ข ๋ฃ ์์๋ ์ฟผ๋ฆฌ๋ฅผ ๊ณ์ ์ฑ๊ณต์ ์ผ๋ก ์คํํฉ๋๋ค. ์๋ฒ ์ ํ ์๊ฐ ์ด๊ณผ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
'use strict';
const mongoose = require('mongoose');
run().catch(err => console.log(err));
async function run() {
mongoose.set('useUnifiedTopology', true);
mongoose.set('useNewUrlParser', true);
await mongoose.connect('mongodb://localhost:27017,localhost:27018,localhost:27019/test?replicaSet=rs');
const Model = mongoose.model('Test', new mongoose.Schema({ name: String }));
while (true) {
console.log(new Date(), 'Query...');
await Model.findOne();
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
๋ด ๊ฐ์ฅ ์ข์ ์ถ์ธก์ @rvanmil ์ ์ค๋ช ์ด ์ ํํ๋ค๋ ๊ฒ์ ๋๋ค. [email protected] (๋ช ์๊ฐ ์์ ๋ฐฐ์กํ ์์ )์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ด ๋ฌธ์ ๊ฐ ์ง์๋๋์ง ํ์ธํ์ญ์์ค.
๋ํ Atlas์์ ๋ค์ ์์์ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด ์๋์ง ์๋ ์ฌ๋์ด ์์ต๋๊น? ์ด ๋ฌธ์ ๋ Atlas๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๊น?
@ vkarpov15 ์ฌ์์์ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ํด๋ฌ์คํฐ๋ฅผ ์ผ์ ์ค์ง/์ฌ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. M10+ ์ฌ์ด์ฆ์์๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ์ด๊ฒ์ด ๋์ Atlas ๋ฌธ์ ์ธ์ง๋ ๊ถ๊ธํฉ๋๋ค. ์
๋ฐ์ดํธ๋ MongoDB ๋๋ผ์ด๋ฒ๋ฅผ ์์ง ํ
์คํธํ ์ ์์์ง๋ง ํ
์คํธํ๊ฒ ๋๋ฉด ์ฌ๊ธฐ์ ๋ค์ ๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
useUnifiedTopology ํ๋๊ทธ์ ๊ด๊ณ์์ด ์ค๋ Atlas ํ๋ฆฌ ํฐ์ด์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ค๋ฅ: MongoTimeoutError: Server selection timed out after 30000 ms
mLab๊ณผ ๊ฐ์ ๋ค๋ฅธ MongoDB ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์๊ณ ์ฝ๊ฐ ์ด๋ฆฌ์์ ๊ฒ์ผ๋ก ๋๋ฌ์ง ๋ง ์ฌ๊ธฐ์์๋ ๋๋๋ ๋๊ตฐ๊ฐ๋ฅผ ๋์ธ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์จ๋ ๊ณต์ ํ ๊ฒ์ ๋๋ค.
MongoTimeoutError์์ '์ด์ ' ํ๋๋ฅผ ํ์ธํ๋๋ฐ 'MongoError: ์๋ชป๋ ์ธ์ฆ ์ธ์ฆ ์คํจ'๋ผ๊ณ ํ์๋ฉ๋๋ค.
๊ทธ๋ ๋ด๊ฐ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๊ฐ ์๋ ์ฐ๊ฒฐ ๋ฌธ์์ด์ mongoDB ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
์ด์ ์ ์๋ํฉ๋๋ค.
MongoDB Atlas๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ IP ์ฃผ์๋ฅผ ํ์ดํธ๋ฆฌ์คํธ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋คํธ์ํฌ ์ก์ธ์ค๋ก ์ด๋ํ์ฌ ํ์ฌ IP ์ฃผ์๋ฅผ ํธ์งํ๊ณ ์ด๋์๋ ์ก์ธ์ค ํ์ฉ์ ํด๋ฆญํฉ๋๋ค.
Atlas๋ฅผ ์ฌ์ฉํ๋ ๋์์๋ง ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ํ์ดํธ๋ฆฌ์คํธ์ 0.0.0.0/0
IP๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
๋๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค :
๋ก์ปฌ mongodb ์๋ฒ์์ ์ฌ์ํ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ์ฟผ๋ฆฌ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ํฉ๋๋ค.
์ด๊ฒ์ ์ก์ธ์ค์ ๊ด๋ จ์ด ์์ต๋๋ค. 0/0/0/0 ์ก์ธ์ค ๊ถํ์ด ์์ผ๋ฉฐ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ฒ๊ฐ ์ํ๋ผ์ค์์ ๋ค์ ์์๋ ๋๋ง๋ค. ๋ค์ค ๋
ธ๋๋ฅผ ๋ง๋ค์ด ์ฌํํ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ(m10+) ๋ฐ ์์ฝ๋ ์ ์ง ๊ด๋ฆฌ ์๊ฐ์ ์ค์ ํฉ๋๋ค. ๊ทธ๋ผ ์ค๋ ๋ฌ๋ ค
์๋น์ค๋ฅผ ์คํ ์ค์ด๊ณ ๋ค์ ์์ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํฉ๋๋ค.
2019๋
10์ 23์ผ ์์์ผ ์ค์ 7์ 42๋ถ Mohammad Mazedul ์ด์ฌ๋, <
[email protected]>์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Atlas๋ฅผ ์ฌ์ฉํ๋ ๋์์๋ง ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ๋๋ ์ถ๊ฐ๋ฅผ ์๋ํ๋ค
ํ์ดํธ๋ฆฌ์คํธ์ 0.0.0.0/0 IP๊ฐ ์์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.๋๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค :
- ๋ชฝ๊ตฌ์ค: 5.7.6
- ๋ ธ๋: v10.16.3
- ์ํ๋ผ์ค ํ๋ฆฌ ํฐ์ด
๋ก์ปฌ mongodb ์๋ฒ์์ ์ฌ์ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ฟผ๋ฆฌ๊ฐ ์๋ํฉ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Automattic/mongoose/issues/8180?email_source=notifications&email_token=AAUHUCYYQIQ5U42IBYT7CQTQQA2B7A5CNFSM4IYQ3ZB2YY3PNVWWK3TUL52HS4DFWEXG43
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAUHUCY5SNFGGCPTGW6GH5DQQA2B7ANCNFSM4IYQ3ZBQ
.
์ ๋ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ 0.0.0.0/0๊ณผ ๋ด IP ์ฃผ์๋ฅผ ์ํ๋ผ์ค์ ํ์ดํธ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
~์ด๊ฒ์ MongoDB Atlas๋ง์ ๋ฌธ์ ์ ๋๋ค.~
MongoDB Atlas๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ผ๋ฐ MongoDB๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
docker-compose๋ฅผ ์ฌ์ฉํ์ฌ "MongoTimeoutError: Server selection timed out after 30000"์ ์ ๋ฐํ๋ ์กฐ๊ฑด์ ์ฑ๊ณต์ ์ผ๋ก ์ฌํํ์ต๋๋ค.
https://github.com/anzairyo0127/mongodb-connection-bug
๋จผ์ ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ์ญ์์ค.
$ docker-compose up -d
$ docker-compose exec a mongo /tmp/conf/init.js
$ docker-compose exec node sh
$ npm i && npm run build
$ npm run start
> 0times
> waiting ....
> {_id: 5db27454b77b210040f2f84e, id: 1, text: 'hogehoge'}
> 1times
> waiting ....
> {_id: 5db27454b77b210040f2f84e, id: 1, text: 'hogehoge'}
> xtimes
> waiting ....
> {_id: 5db27454b77b210040f2f84e, id: 1, text: 'hogehoge'}
> ......
md5-cc5c53b3c0322ef988c85b63b4bb6c4e
$ docker-compose restart a b c
md5-788ff0ed4e46daf35b1b8594351b929f
> xtimes
> waiting ....
> (node: 4360) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms
> at Timeout.setTimeout [as _onTimeout] (/var/work/node_modules/mongodb/lib/core/sdam/topology.js:878:9)
> at ontimeout (timers.js: 436: 11)
> at tryOnTimeout (timers.js: 300: 5)
> at listOnTimeout (timers.js: 263: 5)
> at Timer.processTimers (timers.js: 223: 10)
> (node: 4360) UnhandledPromiseRejectionWarning: Unhandled promise rejection.This error originated either by throwing inside of an> async function without a catch block, or by rejecting a promise which was not handled with .catch (). (rejection id: 1)
> (node: 4360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that
> are not handled will terminate the Node.js process with a non-zero exit code.
@anzairyo0127 ์ต์ 3.3.3 mongodb ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋์ผํ ์์ ์ ์๋ํ ์ ์์ต๋๊น?
@rvanmil ver3.3.3 ์์ ์ฌํ ๊ฐ๋ฅํฉ๋๋ค.
์ด ์ค๋ฅ๋ mongoDB๊ฐ ๋ณต์ ๊ตฌ์ฑ์ ์๊ณ ์ธ์คํด์ค ์ค ํ๋(์๋ง๋ ๊ธฐ๋ณธ ์ธ์คํด์ค)๊ฐ ๋ค์ด๋๊ธฐ ์ง์ ์ด๋ ์์ ์งํ์ ๋ช
๋ น์ ์์ ํ ๋ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
MongoDB Atlas์์ ์ด๋ฐ ์ผ์ด ์์ฃผ ์ผ์ด๋๋ ์ด์ ๋ MongoDB Atlas๊ฐ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋ง์ ์ํด ํด๋ฌ์คํฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ์ด ๋ฌธ์ ๋ ....
1๋ฌ ๋๊ฒ ๊ฐ์ ๋ฌธ์ ์ธ๋ฐ ์์ง ํด๊ฒฐ์ด ์๋๋ค์ -_-
[email protected]๋ก ์ ๋ฐ์ดํธํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
@octavioamu ๋ ์์ธํ
์ด๋ค ๋ฒ์ ์ด ์ค์น๋์๋์ง ๋ชฐ๋ผ์ ์ฃ์กํฉ๋๋ค. mongo๋ก ํ๋์ ์์
ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ง๋ ์์ฃผ ์ค๋๋ ๋ฒ์ ์ผ ๊ฒ์
๋๋ค.
๋ชฝ๊ตฌ์ค ๋ฒ์ ์ @5.7.7์ ์์ต๋๋ค.
๋ฉ์์ง๋ ๋์๊ฒ ์๊ตฌ์ ์ด์๊ณ [email protected] (brew๋ฅผ ํตํด ์ค์น)๋ฅผ ์ค์นํ๋ฉด ๋ฉ์์ง๊ฐ ์ค์ง๋์์ต๋๋ค.
{useUnifiedTopology: false}
์ค์ ํ๋ฉด ์ธ์ฆ ์คํจ
(node:19948) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoError: Authentication failed.]
{useUnifiedTopology: true}
์ค์ ํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
(node:20213) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms
๋น๋ฐ๋ฒํธ๋ ํ์คํ ๋ง์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ๊ฒ๊ณผ LST Node.js์ ์ต์ ๋ฒ์ ์ด ์๋ ๋ก์ปฌ ์์คํ
์์ ์ฌํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ข
๋ฅ์ ์ธ์ฆ ์์ด ์ฐ๊ฒฐ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ก์ปฌ์์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด const MONGODB_URI = "mongodb://localhost/fullstack"
์๊ฐ ์ด๊ณผ ๋ฌธ์ ๋ฅผ ์ค์ ํ๋ฉด ์ฌ๋ผ์ง๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์ธ์ฆ๊ณผ ๊ด๋ จ์ด ์์ต๋๊น? ๋ค์์ ๋ก์ปฌ ์ค์ ์์ ๋ฌธ์ ๋ฅผ ์ฌํํ๋ MWE์
๋๋ค.
const mongoose = require('mongoose')
// const url = 'mongodb://fullstack:fullstack@localhost/fullstack'
const url = 'mongodb://localhost/fullstack'
console.log('Connection url = ', url, 'connecting')
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
console.log('Connected.')
mongoose.connection.close()
MongoDB ์ค์ ์ ์ต์ Docker ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ฌ๊ธฐ์์๋ ์ผ์ด๋๊ณ ์์ต๋๋ค. ํ๋ก๋์ ์๋ฒ๋ ๋ค์ ๋ฉ์์ง๋ก ์๋ตํฉ๋๋ค. ์ง๊ธ์ useUnifiedTopology์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
MongoDB ์ฐ๊ฒฐ ์ต์
var options = { useCreateIndex: true, useNewUrlParser: true, useFindAndModify: false, useUnifiedTopology: true, promiseLibrary: global.Promise };
์๋ฒ ๋ก๊ทธ
MongoTimeoutError: Server selection timed out after 30000 ms Oct 16 12:56:31 app/web.1: at Timeout.setTimeout (/app/node_modules/mongodb/lib/core/sdam/topology.js:850:16) Oct 16 12:56:31 app/web.1: at Shim.applySegment (/app/node_modules/newrelic/lib/shim/shim.js:1424:20) Oct 16 12:56:31 app/web.1: at Timeout.wrappedCallback [as _onTimeout] (/app/node_modules/newrelic/lib/shim/shim.js:1281:21) Oct 16 12:56:31 app/web.1: at ontimeout (timers.js:436:11) Oct 16 12:56:31 app/web.1: at tryOnTimeout (timers.js:300:5) Oct 16 12:56:31 app/web.1: at listOnTimeout (timers.js:263:5) Oct 16 12:56:31 app/web.1: at Timer.processTimers (timers.js:223:10)
์ฌ๊ธฐ์์๋ ์ผ์ด๋๊ณ ์์ต๋๋ค. ํ๋ก๋์ ์๋ฒ๋ ๋ค์ ๋ฉ์์ง๋ก ์๋ตํฉ๋๋ค. ์ง๊ธ์ useUnifiedTopology์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
MongoDB ์ฐ๊ฒฐ ์ต์
var options = { useCreateIndex: true, useNewUrlParser: true, useFindAndModify: false, useUnifiedTopology: true, promiseLibrary: global.Promise };
์๋ฒ ๋ก๊ทธ
MongoTimeoutError: Server selection timed out after 30000 ms Oct 16 12:56:31 app/web.1: at Timeout.setTimeout (/app/node_modules/mongodb/lib/core/sdam/topology.js:850:16) Oct 16 12:56:31 app/web.1: at Shim.applySegment (/app/node_modules/newrelic/lib/shim/shim.js:1424:20) Oct 16 12:56:31 app/web.1: at Timeout.wrappedCallback [as _onTimeout] (/app/node_modules/newrelic/lib/shim/shim.js:1281:21) Oct 16 12:56:31 app/web.1: at ontimeout (timers.js:436:11) Oct 16 12:56:31 app/web.1: at tryOnTimeout (timers.js:300:5) Oct 16 12:56:31 app/web.1: at listOnTimeout (timers.js:263:5) Oct 16 12:56:31 app/web.1: at Timer.processTimers (timers.js:223:10)
๋๋ mongo db atlas๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
dub-tools-jobs: orders - error MongoTimeoutError: Server selection timed out after 30000 ms
Oct 29 13:16:30 app/worker.1: at Timeout.setTimeout [as _onTimeout] (/app/node_modules/mongoose/node_modules/mongodb/lib/core/sdam/topology.js:850:16)
Oct 29 13:16:30 app/worker.1: at ontimeout (timers.js:436:11)
Oct 29 13:16:30 app/worker.1: at tryOnTimeout (timers.js:300:5)
Oct 29 13:16:30 app/worker.1: at listOnTimeout (timers.js:263:5)
Oct 29 13:16:30 app/worker.1: at Timer.processTimers (timers.js:223:10) +2m
์ด ๋ชจ๋ ๊ฒ์ ์ ์๋ ํ๋์ ๊ถ์ฅ ์ฌํญ์ผ๋ก useUnifiedTopology์ ์ฃผ์์ ๋ฌ๋ฉด์ ๋ฐ์ํ์ต๋๋ค.
// mongodb connections
var options = {
useCreateIndex: true,
useNewUrlParser: true,
useFindAndModify: false,
// useUnifiedTopology: true,
promiseLibrary: global.Promise
};
mongoose ๋ฐ mongoDB ์ํ๋ผ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ต์
์ด ๋ค์๊ณผ ๊ฐ์์ง ํ์ธํ์ญ์์ค.
mongoose.connect(DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true })
์ด ํ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ฉด mongoDB์ ๋คํธ์ํฌ ์ก์ธ์ค๋ก ์ด๋ํ์ฌ mongoDB์ IP ์ฃผ์๋ฅผ ํ์ดํธ๋ฆฌ์คํธ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ค๋ฅ๋ ๋ฉฐ์น ๋ง๋ค ๋ด ์ฑ์ ์ถฉ๋์ํค๋ฉฐ ์ด๊ฒ์ด IP ์ฃผ์์ ์ก์ธ์ค ๋๋ ํ์ฉ ๋ชฉ๋ก๊ณผ ๊ด๋ จ์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๋๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค :
์ง๊ธ์ useUnifiedTopology: true
๋ ์ฃผ์ ์ฒ๋ฆฌํ๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ธ๊ธํ๋ฏ์ด Atlas ๋๋ mongo์ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
https://jira.mongodb.org/browse/NODE-2267
@vkarpov15 ๋ Mongoose์ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ์ ์์ต๋๋ค.
์ด๋ค ์ด์ ๋ก ์ฐ๊ฒฐ์ด ์คํจํ์ฌ ํ์ฌ IP ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋คํธ์ํฌ ์ก์ธ์ค IP ํ์ดํธ๋ฆฌ์คํธ์์ ์์ ํ๊ณ ํ์ฌ IP๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์๋ ํ์ธ์! ์ ์ด๋ฆ์ Matt์ด๊ณ MongoDB์ ๋๋ผ์ด๋ฒ ํ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ ๋ชจ๋๊ฐ ๊ฒช๊ณ ์๋ ์ ์ ์ ๋ํด ๋งค์ฐ ์ ๊ฐ์ค๋ฝ๊ฒ ์๊ฐํ๋ฉฐ ์ด ๋ฌธ์ ์ ๋ํด ์ฝ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋๋ฆฌ๊ณ ์ถ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋งค์ฐ ์์ ์ ์ธ ํ๋ก์ธ์ค๋ก ๋ฐํ์ง ๊ธฐ์กด ํ ํด๋ก์ง ์ ํ์ ๋จ๊ณ์ ์ผ๋ก ์์ ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ ๋จ๊ณ์ ์ผ๋ก ์ ๊ฑฐํ๋ฉด ๋๋ผ์ด๋ฒ์ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด์ ํฌ๊ฒ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ฉฐ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ๋๋ผ์ด๋ฒ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํนํ "ํตํฉ ํ ํด๋ก์ง"๋ฅผ ๋์ ํ๋ ๋์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ธฐ ์ํด ์ฐ๊ฒฐ ํ ์ฌ์์ฑ์ ๋์ ํ์ง ์์์ต๋๋ค. ์ฐ๊ฒฐ ํ์ด ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ฒ๋ณด๋ค ํ ํด๋ก์ง ์ ํ์ ๋ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํนํ ์๋ฒ ๋ชจ๋ํฐ๋ง๊ณผ ๊ด๋ จํ์ฌ ์ฝ๊ฐ์ ํ๊ท๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ค๋ ์์นจ์ ๋๋ ๋น์ ์ด ์ง๋ฉดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ๋๋ผ์ด๋ฒ์ v3.3.4-rc0 ์ ํธ์ํ์ต๋๋ค. ์ด ๋ฒ์ ์ ์ฌ์ฉํด ๋ณด๊ณ ๊ฒฝํ์ ์๋ ค์ฃผ์๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๊ธฐ์กด ํฐ์ผ ๊ฐ๊ฐ์ ๋ํด NODE-2267 ์ ๋ํ ์๊ฒฌ์
3.3.4-rc0์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค ๐ ๋ ์์ธํ ํ ์คํธ ๊ฒฐ๊ณผ๋ ๋์ค์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
package.json์ mongodb ๋ฒ์ ์ ๋ค์์ผ๋ก ๋ณ๊ฒฝํ ํ
"mongodb": "3.3.4-rc0",
ํญ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค(์ด ์ค๋ฅ๋ mongodb ๋ฒ์ ์ด 3.3.3์ผ ๋ ๋ฐ์ํ์ง ์์).
===============================================
npm ์ค๋ฅ! ๊ฒฝ๋ก /tmp/app/node_modules/npm/node_modules/abbrev
npm ์ค๋ฅ! ์ฝ๋ ENOENT
npm ์ค๋ฅ! ์ค๋ฅ ๋ฒํธ -2
npm ์ค๋ฅ! ์์คํ
ํธ์ถ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
npm ์ค๋ฅ! enoent ENOENT: ํด๋น ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ด๋ฆ์ '/tmp/app/node_modules/npm/node_modules/abbrev' -> '/tmp/app/node_modules/npm/node_modules/.abbrev.DELETE'๋ก ๋ฐ๊ฟ๋๋ค.
npm ์ค๋ฅ! enoent ์ด๊ฒ์ npm์ด ํ์ผ์ ์ฐพ์ง ๋ชปํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
npm ์ค๋ฅ! ์๋
ธ์ํธ
npm ์ค๋ฅ! ์ด ์คํ์ ์ ์ฒด ๋ก๊ทธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
npm ์ค๋ฅ! /home/vcap/.npm/_logs/2019-11-06T17_19_55_661Z-debug.log
[31;1m ์ค๋ฅ [0m ์ข
์์ฑ์ ๋น๋ํ ์ ์์: ์ข
๋ฃ ์ํ 254
๋๋กญ๋ฆฟ ์ปดํ์ผ ์คํจ: ๋ชจ๋ ๊ณต๊ธ ์คํฌ๋ฆฝํธ ์คํ ์คํจ: ์ข
๋ฃ ์ํ 14
์ข
๋ฃ ์ํ 223
====================================
๋ด npm ๋ฒ์ ์ 6.11.3์ npm์
๋๋ค.
์ด ์ค๋ฅ๋ ์ด ์๋ก์ด mongodb v3.3.4-rc0 ๋น๋์ ๊ด๋ จ์ด ์์ต๋๊น?
@zhenwan abbrev
ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. package-lock.json
๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น ํ์ผ์ ์ญ์ ํ๊ณ npm install
๋ค์ ์คํํด ๋ณด์ญ์์ค.
๋ค์ ์ค์ ์ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ฅผ ์ฌํํ๊ณ v3.3.4-rc0 ๋๋ผ์ด๋ฒ๋ก ํด๊ฒฐ๋์๋์ง ํ์ธํ ์ ์์์ต๋๋ค.
todo
MongoDB ์ปฌ๋ ์
์ ์ฟผ๋ฆฌํ๋ ๊ฐ๋จํ http API GET /api/todos
๋ฅผ ๋
ธ์ถํ๋ Node.js ์น ์๋ฒ์ด ํ ์คํธ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
โ
Mongodb Node.js 3.3.2
useUnifiedTopology false
> MongoDB failover triggered
> MongoDB 'reconnect' event
> A few http calls with +/- 5000ms response times
> MongoDB failover finished
> Everything back to normal
โ Mongodb Node.js 3.3.2
useUnifiedTopology true
> MongoDB failover triggered
> MongoDB 'close' event
> Many MongoNetworkError errors
{
"name": "MongoNetworkError",
"stack": "Error: connect ECONNREFUSED <ip_redacted>:27017
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14)",
"errorLabels": [
"TransientTransactionError"
]
}
> EventEmitter memory leak warning
(node:18) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 topologyDescriptionChanged listeners added to [NativeTopology]. Use emitter.setMaxListeners() to increase limit
> Many MongoTimeoutError errors
{
"name": "MongoTimeoutError",
"stack": "MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout._onTimeout (/app/node_modules/mongodb/lib/core/sdam/topology.js:850:16)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)"
}
> MongoDB failover finished
> Server unable to recover MongoDB connection
> Server restarted manually
> Everything back to normal
โ ๏ธ Mongodb Node.js 3.3.4-rc0
useUnifiedTopology true
> MongoDB failover triggered
> MongoDB 'reconnect' event expected but not seen
> A few http calls with +/- 5000ms response times
> A couple failed http calls:
{
"name": "MongoError",
"stack": "MongoError: Cache Reader No keys found for HMAC that is valid for time: { ts: Timestamp(1573064656, 1) } with id: 6756219367492419585
at Connection.<anonymous> (/app/node_modules/mongodb/lib/core/connection/pool.js:451:61)
at Connection.emit (events.js:210:5)
at processMessage (/app/node_modules/mongodb/lib/core/connection/connection.js:368:10)
at TLSSocket.<anonymous> (/app/node_modules/mongodb/lib/core/connection/connection.js:537:15)
at TLSSocket.emit (events.js:210:5)
at addChunk (_stream_readable.js:308:12)
at readableAddChunk (_stream_readable.js:289:11)
at TLSSocket.Readable.push (_stream_readable.js:223:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23)",
"ok": 0,
"errmsg": "Cache Reader No keys found for HMAC that is valid for time: { ts: Timestamp(1573064656, 1) } with id: 6756219367492419585",
"code": 211,
"codeName": "KeyNotFound"
}
> MongoDB failover finished
> Everything back to normal
๋ฐ๋ผ์ v3.3.4-rc0
์ ํจ๊ป ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ์๋ฒ๋ ์ฐ๊ฒฐ์ ๋ณต๊ตฌํ๊ณ MongoDB์์ ๋ฐ์ดํฐ ์ ๊ณต์ ์ฌ๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@mbroadst ์, package-lock.json์ ์ญ์ ํ๋ฉด ๋๋ฝ๋ ํ์ผ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
ํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
2019-11-06T12:52:10.35-0600 [CELL/0] OUT ์ปจํ
์ด๋๊ฐ ๊ฑด๊ฐํด์ก์ต๋๋ค
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] ์ค๋ฅ /home/vcap/app/node_modules/connect-mongo/src/index.js:135
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] ERR throw err
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] ERR ^
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] ์ค๋ฅ ์ค๋ฅ: 30000ms ํ์ ์๋ฒ ์ ํ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค.
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] Timeout.setTimeout์์ ERR [_onTimeout์ผ๋ก](/home/vcap/app/node_modules/connect-mongo/node_modules/mongodb/lib/core /sdam/topology.js:878:9)
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] ontimeout ์ ERR(timers.js:469:11)
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] tryOnTimeout์์ ERR(timers.js:304:5)
2019-11-06T12:52:39.06-0600 [APP/PROC/WEB/0] Timer.listOnTimeout์์ ERR(timers.js:264:5)
2019-11-06T12:52:39.35-0600 [APP/PROC/WEB/0] OUT ์ข
๋ฃ ์ํ 1
@zhenwan ์ด๊ธฐ ์ฐ๊ฒฐ ์ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ topology.js:878
๋ํ ์ญ์ถ์ MongoTimeoutError
์ ์์ ํ์ง๋ ์์ต๋๋ค.
ํน์ ์ฌ๋ก๋ฅผ ๋ถ๋ฅํ ์ ์๋๋ก ์ jira ํฐ์ผ์ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น? ์ฌ๊ธฐ์ ๋ถ์ฌ๋ฃ์ ๊ฒ๋ณด๋ค ๋ ์์ธํ ์ ๋ณด๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
@mbroadst
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. v3.3.4-rc0์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ด ๋ฉ์์ง๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค.
MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout.setTimeout (api/node_modules/mongodb/lib/core/sdam/topology.js:899:9)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
์ ๊ฒฝ์ฐ์๋ loopback-connector-mongodb
ํ๊ณ ์์ง๋ง package.json
์์ mongodb
์ ๋ง์ง๋ง ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ๋ก ์ฌ์ฉํ๋๋ก resolutions
ํ์ต๋๋ค.
"resolutions": {
"mongodb": "^3.3.4-rc0"
}
๋ค์๊ณผ ๊ฐ์ด ๋ด ์ฐ๊ฒฐ ๋งค๊ฐ ๋ณ์
"host": "127.0.0.1",
"port": 27017,
"database": "***",
"password": "***",
"user": "***",
"authSource": "***",
"useNewUrlParser": true,
"enableGeoIndexing": true
์๋๋ ๋ด ํ๊ฒฝ ๋งค๊ฐ ๋ณ์์ ๋๋ค.
MongoDB server version: 3.6.3 on localhost
yarn v1.19.1
node v8.16.2
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค
์
๋ฐ์ดํธ
๋ํ ์ฐ๊ฒฐ ๋งค๊ฐ ๋ณ์์ useUnifiedTopology: true
๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
mongoose๋ฅผ ์ง์ ์ฌ์ฉํ๋ ์ฌ๋์ ๋ ๋ค๋ฅธ ํ์ธ์ useUnifiedTopology: false
๊ฐ ์ ์๊ฒ ํจ๊ณผ์ ์ด๋ผ๋ ๊ฒ์
๋๋ค.
@mbroadst MongoDB ๋์์ ์ ๋ฐ์ดํธ๋ฅผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ด ๋ฌด์ง๋ฅผ ์ค๋กํฉ๋๋ค. ๊ทธ๋ฌ๋ mongodb v3.3.4-rc0์ ์์์ ์ธ๊ธํ ์์ ์ฌํญ์ด ์ด๋ ์์ ์์ ๋ชฝ๊ตฌ์ค๋ก ๊ณ๋จ์์ผ๋ก ๋ด๋ ค๊ฐ๊น์? ํ๋ก๋์ ํ๊ฒฝ์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์์ฉํ๋ค๋ ์์ด๋์ด๊ฐ ์ฝ๊ฐ ๋ถํธํฉ๋๋ค.
@mmmmoj ์์ @zhenwan ์ ์ง๋ฌธ๊ณผ ์ ์ฌํ์ง๋ง ์คํ ์ถ์ ์ ์ค์ ๋ก v3.3.4-rc0์ ์คํํ๊ณ ์์ง ์์์ ๋ํ๋ด๋ ๊ฒ ๊ฐ์ต๋๋ค. package-lock.json
์ ๊ฑฐํด ๋ณด์ญ์์ค. ๊ทํ์ ์ฌ๋ก๋ฅผ ์์ธํ ์กฐ์ฌํ ์ ์๋๋ก jira ํฐ์ผ์ ์ ์ถํด ์ฃผ ์๊ฒ ์ต๋๊น?
@bigsee (๋จ์ GitHub๋ ์ด๋ฆ ์๋ ์์ฑ์ ์ข์ํ์ง _ !) ์ด ๊ธฐ๋ฅ์ด ํจ๊ณผ๊ฐ ์๋ค๋ ์์์ ๋ค์ผ๋ @vkarpov15 ๊ฐ ๋ฆด๋ฆฌ์ค ์๊ธฐ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ํ๊ฒ ์ง๋ง, ์ฐ๋ฆฌ๋ ๊ธด๋ฐํ๊ฒ ํ๋ ฅํ๊ณ ์์ผ๋ฉฐ ๊ทธ๊ฐ ์ฌ๋ฌ๋ถ์ ์ํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค. :)
@mbroadst
์๋ฃ! ๊ฐ์ฌ ํด์
๋
ธ๋-2313
@mbroadst ํ! ์ด์ํ ์ด๋ฆ ์ฃ์กํฉ๋๋ค!
๋ด๊ฐ ๋๋ฌด ๋นจ๋ฆฌ ๋งํ์ ์๋ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์๋ง๋ ๋ํ๋๋ ์ค๋ฅ์ ๋ฌด์์์ ์ธ ํน์ฑ์ ๊ฐ์ํ ๋์ผ ๊ฒ์ ๋๋ค. ๋ด ์ฑ์ ์ฝ๋ ์คํํธํ ๋ ์์๋๋ ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ์ ํจ๊ป ์ด์ ๋ก๊ทธ์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๊ฐ ๋ฌด์์ด ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
Unhandled rejection: { MongoNetworkError: failed to connect to server [myserver.mlab.com:55841] on first connect [{ MongoNetworkError: connection 0 to myserver.mlab.com:55841 timed out
at Socket.<anonymous> (/var/task/node_modules/mongodb/lib/core/connection/connection.js:335:7)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:420:8)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5) name: 'MongoError', [Symbol(mongoErrorContextSymbol)]: {} }]
at Pool.<anonymous> (/var/task/node_modules/mongodb/lib/core/topologies/server.js:431:11)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at connect (/var/task/node_modules/mongodb/lib/core/connection/pool.js:580:14)
at callback (/var/task/node_modules/mongodb/lib/core/connection/connect.js:109:5)
at provider.auth.err (/var/task/node_modules/mongodb/lib/core/connection/connect.js:352:21)
at _authenticateSingleConnection (/var/task/node_modules/mongodb/lib/core/auth/auth_provider.js:66:11)
at sendAuthCommand (/var/task/node_modules/mongodb/lib/core/auth/scram.js:177:16)
at Connection.errorHandler (/var/task/node_modules/mongodb/lib/core/connection/connect.js:321:5)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/var/task/node_modules/mongodb/lib/core/connection/connection.js:333:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }
์์ ์๋ MongoTimeoutError
์์ผ๋ ์ง๊ธ์ MongoNetworkError
... ...์์ด๋์ด๊ฐ ์๋์?
@bigsee ๊ทธ ์ค๋ฅ๋ ํตํฉ ํ ํด๋ก์ง๋ฅผ ์ฌ์ฉํ์ง _ useUnifiedTopology: true
๋ฅผ MongoClient
์ ์ ๋ฌํ์ฌ ํ์ฑํํ์ญ์์ค.
@mbroadst ๋ง์ต๋๋ค . ์ด๊ฒ์ด ์ด ๋ฌธ์ ์ ํต์ฌ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ํ๋ ธ๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
useUnifiedTopology: true
ํ๋ฉด ์ง์ ์ค๋จ ๊ฒฝ๊ณ ๊ฐ ์ฌ๋ผ์ง์ง๋ง ์ด ๋ฌธ์ MongoTimeoutError: Server selection timed out after 30000 ms
์ ์ ๋ชฉ ์ค๋ฅ์ ํจ๊ป ๋ด ์ฑ์ด ๋ฌด์์๋ก ์ถฉ๋ํฉ๋๋ค.
@vkarpov15 ๋ฐ ์์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ๋ฌธ์ ๋ฅผ ์ผ๊ด๋๊ฒ ์ฌํํ ์ ์์์ต๋๋ค. ์ค๋ฅ๋ ํ๋ฃจ์ ๋ช ๋ฒ ๋ฐ์ํ์ฌ ๋๋๋ก 502 ๋ฐ ๋์ฐํ UX ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ก์ด ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์์ ๋ณด๊ณ ๋ ๋๋ก useUnifiedTopology: false
(๋๋ ์ฃผ์ ์ฒ๋ฆฌ)์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด ๋ฌธ์ ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ์ง๋ง ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ๋ฅผ ๋ณต์ํ๊ณ ์ด์ ์์ ์ฝ๊ฐ ๋ฌด์์ด MongoNetworkError๋ฅผ ๋ณต์ํฉ๋๋ค. ์ ์ณ๋๊ณ , ์ด๊ฒ์ ์ค์ ๋ก ๋ด ์ฑ์ ์ฃฝ์ด์ง๋ ์์ง๋ง ์ด๋ ์์ ์์ ์ฌ์ฉ์๋ฅผ ์ํด ๊ทธ๋ด ๊ฒ์ด๋ผ๊ณ ๊ฑฑ์ ํฉ๋๋ค.
@bigsee MongoNetworkError
๊ฒฝํํ๊ณ ์๋ ๊ฒ์ ์๋ก์ด ๊ฒ์ด ์๋๋ฉฐ ๋๋ผ์ด๋ฒ๊ฐ ํด๋ฌ์คํฐ์ ์ด๊ธฐ ์ฐ๊ฒฐ์ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค(์ถ๊ฐ๋ก ์ฑ ์์๊ณผ ํด๋ฌ์คํฐ ์์ ์ฌ์ด์ ์ผ์ข
์ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ธํด ์ด ๊ฒฝ์ฐ ํตํฉ ํ ํด๋ก์ง๊ฐ ์ฌ๊ธฐ์์๋ ๋์์ด ๋ ๊ฒ์
๋๋ค).
์ด ๋ฌธ์ ์ ์์ ์ ์ฌ๋๋ค์ด ํตํฉ ํ ํด๋ก์ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ง์นจ์ ๋ฐ๋ฅด๊ณ ์์๋๋ฐ ๊ทธ๋ด ๋ ๊ฐ์ง ์๊ฐ ์ด๊ณผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์
๋๋ค. v3.3.4-rc0
๋ ํด๋น ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฆด๋ฆฌ์ค๋์์ผ๋ฏ๋ก ํ์ฌ ์ง์นจ์ ํด๋น ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ง์ ์ค๋จ ์๋ฆผ์ ์ ๊ฑฐํ๊ณ ์ฌ๋๋ค์ด ๊ฒช์๋ ๊ฐ์ง ์๊ฐ ์ด๊ณผ ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๊ฒ์
๋๋ค.
๋ํ ์ด ๋ฒ์ ์ _all_ ์๊ฐ ์ด๊ณผ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ์ง ์์ต๋๋ค. ์ด ์ค๋ฅ๋ ๋๋ผ์ด๋ฒ๊ฐ ํด๋ฌ์คํฐ์ ๋ํ ์ด๊ธฐ ์ฐ๊ฒฐ์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ฉฐ, ์ด๋ ์ผ์ข
์ ๊ตฌ์ฑ(์ฐ๊ฒฐ ๋ฌธ์์ด) ๋๋ ์ฌ์ฉ์ ์ธก์ ๋คํธ์ํฌ ์ค๋ฅ๋ฅผ ๋ํ๋
๋๋ค. ํตํฉ ํ ํด๋ก์ง์์๋ MongoTimeoutError
๋ก ํ์๋๋ฉฐ reason
ํ๋๋ ์ด๊ธฐ ์ฐ๊ฒฐ ์ ์๊ฐ ์ด๊ณผ๋ฅผ ์ ๋ฐํ ๋คํธ์ํฌ ์ค๋ฅ๋ฅผ ๋ํ๋
๋๋ค.
@mbroadst ๋ด ๋ง์ง๋ง ๋๊ธ์์ MongoNetworkError
๊ฐ ์๋ก์ด ๊ฒ์ด๋ผ๊ณ ์ ์ํ๋ ค๋ ๊ฒ์ ์๋๋ฏ๋ก ๊ทธ๋ ๊ฒ ์ฝํ๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ์๋ก์ด ๊ฒ์ `MongoTimeoutError'์
๋๋ค. ๋ฐ๋ผ๊ฑด๋ ๋ ๋ช
ํํ๊ฒํ๊ธฐ ์ํด ์ด๊ฒ์ ๋ด ํ๋ก์ธ์ค์์ต๋๋ค.
useUnifiedTopology: true
. ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.MongoTimeoutError
๋ฐ ์์ ํ์๋ ์คํ ์ถ์ ์ ์ฒ์ ๋ช ์ค์ ํ์ํฉ๋๋ค.useUnifiedTopology: false
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.MongoTimeoutError
์ค๋ฅ๋ ์ฑ ์ถฉ๋๊ณผ ํจ๊ป ์ฌ๋ผ์ง๋๋ค. ๊ทธ๋ฌ๋ ์ฒ์์๋ ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ๋ก ๋์ฒด๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋์ค์ useUnifiedTopology: false
์ค์ ํ๊ธฐ ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ณผ ์ ์๋ ์ถ๊ฐ MongoNetworkError
useUnifiedTopology: false
์๋ง๋ ๋น์ ์ด ์ ์ํ ๊ฒ์ฒ๋ผ ์ด๊ฒ์ ์ธ๊ณผ๊ด๊ณ๋ผ๊ธฐ๋ณด๋ค๋ ์๊ด๊ด๊ณ์ผ ๊ฒ์ ๋๋ค. ๋ด๊ฒ๋ ๊ทธ์ ๋ด๋ฐฐ๋ฅผ ํผ์ฐ๋ ์ด์ฒ๋ผ ๋ณด์๋ค. ์ ์ด๋ ์ง๊ธ์ ์ฑ์ด ์ถฉ๋ํ์ง ์์ต๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ต์ ์ ๋จ๊ฒจ๋๋ ๊ฒ์ด ๊ฑฑ์ ์ ๋๋ค.
@bigsee ์! ์ฃ์กํฉ๋๋ค. v3.3.4-rc0
๋ฒ๊ทธ ์์ ์ด v3.3.3
์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ ํ์ธํ๋ค๋ ์๋ฏธ๋ก ์๋ ๋๊ธ์ ์๋ชป ์ฝ์์ต๋๋ค. ์ ๋ฒ์ ์ ์ฌ์ฉํด ๋ณผ ๊ธฐํ๊ฐ ์์์ต๋๊น?
์ด๊ฒ์ Mongodb์ ๋ํ ์ฒซ ๋ฒ์งธ ์๋์ด๋ฉฐ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฃผ์์ ์ฝ๊ณ ๋ด db๋ฅผ v3.3.4-rc0์ผ๋ก ๋ณ๊ฒฝํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ์์ ๋์ง ์์์ต๋๋ค.
DeprecationWarning: ํ์ฌ ์๋ฒ ๊ฒ์ ๋ฐ ๋ชจ๋ํฐ๋ง ์์ง์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ํฅํ ๋ฒ์ ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์๋ก์ด ์๋ฒ ๊ฒ์ ๋ฐ ๋ชจ๋ํฐ๋ง ์์ง์ ์ฌ์ฉํ๋ ค๋ฉด { useUnifiedTopology: true } ์ต์
์ MongoClient ์์ฑ์์ ์ ๋ฌํ์ญ์์ค.
MongoNetworkError: [cluster0-shard-00-00-rhdve.mongodb.dll] ์๋ฒ์ ์ฐ๊ฒฐํ์ง ๋ชปํ์ต๋๋ค. net:27017 ] ์ฒ์ ์ฐ๊ฒฐํ ๋ [MongoNetworkError: connection 3 to cluster0-shard-00-00-rhdve.mongodb. ๊ทธ๋ฌผ:27017 ํ์
TLSSocket์์.
Object.onceWrapper์์ (events.js:297:20)
TLSSocket.emit์์(events.js:209:13)
net.js:588:12์์
TCP.done์์ (_tls_wrap.js:479:7) {
์ด๋ฆ: 'MongoNetworkError',
errorLabels: [๋ฐฐ์ด],
}]
ํ์์.
Pool.emit์์ (events.js:209:13)
C:laragonwwwVue-express-mongodbnode_modulesmongodblibcoreconnectionpool.js:562:14์์
C:laragonwwwVue-express-mongodbnode_modulesmongodblibcoreconnectionpool.js:999:9์์
์ฝ๋ฐฑ ์(C:laragonwwwVue-express-mongodbnode_modulesmongodblibcoreconnectionconnect.js:109:5)
C:laragonwwwVue-express-mongodbnode_modulesmongodblibcoreconnectionconnect.js:129:7์์
Connection.errorHandler์์ (C:laragonwwwVue-express-mongodbnode_modulesmongodblibcoreconnectionconnect.js:321:5)
Object.onceWrapper์์ (events.js:297:20)
Connection.emit์์ (events.js:209:13)
TLSSocket์์.
์ด๋ฆ: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
}
TypeError: ์ ์๋์ง ์์ '์ฐพ๊ธฐ' ์์ฑ์ ์ฝ์ ์ ์์ต๋๋ค.
C:laragonwwwVue-express-mongodbserverroutesapiposts.js:12:26์์
@Syfon01 ๋ฐ์ํ ์ค๋ฅ๋ ์ผ์ข
์ ๊ตฌ์ฑ ์ค๋ฅ๋ก ์ธํด ๋๋ผ์ด๋ฒ๊ฐ ๋ ๊ฑฐ์ ํ ํด๋ก์ง๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ 10์ด ํ์ ํด๋ฌ์คํฐ์ ๋ํ ์ด๊ธฐ ์ฐ๊ฒฐ์ ์ค์ ํ์ง ๋ชปํ๋ ๊ฒ์
๋๋ค. ์ฐ๊ฒฐ ๋ฌธ์์ด๊ณผ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ํ์ธํ๊ณ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ ์ ์๋์ง ํ์ธํ์ญ์์ค(์๋ง๋ mongo
์
ธ ์ฌ์ฉ). ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด jira ํฐ์ผ์ ์ด์ด์ ๋ํ๋ฅผ ๊ณ์ํ ์ ์๊ณ ์ด GitHub ๋ฌธ์ ๋ฅผ ๋ณด๋ ์ฌ๋๋ค์ ํผ๋์ค๋ฝ๊ฒ ํ์ง ๋ง์ญ์์ค.
์ด ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋๋ค์ ๊ฒฝ์ฐ Mongo Atlas Cloud Instance๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ก์ธ์ค ํญ์์ IP ์ฃผ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ๋์ง ํ์ธํ์ญ์์ค.
๋๋ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ด ISP๊ฐ ๋คํธ์ํฌ์ ๋ค์ ์ฐ๊ฒฐํ ๋๋ง๋ค (DHCP) ์ IP๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ Mongo Atlas๋ ์ด์ ์ ์ง์ ๋ IP ์ฃผ์๋ง ํ์ดํธ๋ฆฌ์คํธ์ ์ฌ๋ ธ์ต๋๋ค. ์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ ๋ฐ์ดํธ - ์๋ํ์ง ์์ต๋๋ค
๋ด ์ฝ๋, ํนํ ์ฝ๋ฐฑ์ ๊ตฌ์กฐ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
mongoose.connect(DATABASE_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => {
console.log('Connected to DB');
app.listen({ port: PORT }, () => {
console.log(`Server running at http://localhost:${PORT}`)
});
}).catch(err => console.log(err));
mongoose.connect(DATABASE_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
}, () => {
console.log('Connected to DB');
app.listen({ port: PORT }, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
}).catch(err => console.log(err));
@mtn2bay ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋๋ฐ ๊ฒฐ๊ณผ๋ ์ฌ์ ํ ๋์ผํ๊ณ ์ ์ผํ ์ฐจ์ด์ ์ ์ฝ๋ฐฑ ํจ์์์ ์ฝ๋ฐฑ ํจ์์์ ์ฐ๊ฒฐ๊ณผ ์ค๋ฅ๊ฐ ๋ชจ๋ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. .then ๋ฐ .catch์ ์์กดํ๋ ๋์ ๋ก๊น ํ์ง ์์ผ๋ฏ๋ก ์ค๋ฅ๊ฐ ์๋๋ผ๋ ํจ์๊ฐ db์ ์ฐ๊ฒฐ๋๊ณ ์ฑ์ ์์ํ๋ ์ค์ ๋๋ค. ๋์ ์ด๊ฒ์ ์๋ํ์ญ์์ค
mongoose.connect(DATABASE_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
}, (err, connection) => {
if(err) {
console.error(err)
return
}
console.log('Connected to DB');
app.listen({ port: PORT }, () => {
console.log(`Server running at http://localhost:${PORT}`);
})
@khaledosman ์์
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ mongoose npm ํจํค์ง๋ฅผ 5.6.9์์ 5.7.6์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋๋ค์ ๊ฒฝ์ฐ Mongo Atlas Cloud Instance๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ก์ธ์ค ํญ์์ IP ์ฃผ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ๋์ง ํ์ธํ์ญ์์ค.
๋๋ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ด ISP๊ฐ ๋คํธ์ํฌ์ ๋ค์ ์ฐ๊ฒฐํ ๋๋ง๋ค (DHCP) ์ IP๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ Mongo Atlas๋ ์ด์ ์ ์ง์ ๋ IP ์ฃผ์๋ง ํ์ดํธ๋ฆฌ์คํธ์ ์ฌ๋ ธ์ต๋๋ค. ์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection
timed out after 30000 ms
at Timeout.setTimeout (C:\Users\Umer MIB\Desktop\Chatbots2\mongobot\node_modules\mongodb\lib\core\sdam\topology.js:878:9)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)
(node:4304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4304) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code
์ด๋ป๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋์นจ๋ฐ์ ๋ค์ด๋ก๋ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ ๋งํฌ๋ฅผ ๋ณต์ฌํ์ต๋๋ค. ์ฐ๊ฒฐ๋๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค. ๋ด ์ฝ๋์์๋ ํ ํด๋ก์ง๊ฐ ์ฌ์ ํ ์ ํจํฉ๋๋ค. ์ผ๋ฐ์ ์ธ mongodb ์ค์น์ ๋ง์ง ์๋ ์ผ๋ถ ์ต์ ์ Compass๋ก ๊ตฌ์ฑํ์ ์ ์์ต๋๋ค. ์ด์ ๋์นจ๋ฐ ์์ด ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฒ์์ ํ ๋ฒ๋ง ์ํํ์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์๊ณ ์ด ํฌ๋ผ ๋๋ถ์ useUnifiedTopology ์ค์ ์ ๋๊ธ์ ๋ฌ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋์ด ์ค์ ์ ์ฃผ์์ ์ ๊ฑฐํ์ง๋ง ์ง๊ธ์ ์ฌ์ ํ โโ์ ์๋ํฉ๋๋ค ... ๊ฝค ํผ๋ ์ค๋ฝ์ต๋๋ค ...
Mongoose v5.7.11์ ์๋ก ์ถ์๋ MongoDB ๋๋ผ์ด๋ฒ 3.3.4๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ์ ์ฌํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ ๋ฌธ์ ๋ฅผ ์ด๊ณ ๋ฌธ์ ํ ํ๋ฆฟ์ ๋ฐ๋ฅด์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์! ์ ์ด๋ฆ์ Matt์ด๊ณ MongoDB์ ๋๋ผ์ด๋ฒ ํ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ ๋ชจ๋๊ฐ ๊ฒช๊ณ ์๋ ์ ์ ์ ๋ํด ๋งค์ฐ ์ ๊ฐ์ค๋ฝ๊ฒ ์๊ฐํ๋ฉฐ ์ด ๋ฌธ์ ์ ๋ํด ์ฝ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋๋ฆฌ๊ณ ์ถ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋งค์ฐ ์์ ์ ์ธ ํ๋ก์ธ์ค๋ก ๋ฐํ์ง ๊ธฐ์กด ํ ํด๋ก์ง ์ ํ์ ๋จ๊ณ์ ์ผ๋ก ์์ ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ ๋จ๊ณ์ ์ผ๋ก ์ ๊ฑฐํ๋ฉด ๋๋ผ์ด๋ฒ์ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด์ ํฌ๊ฒ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ฉฐ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ๋๋ผ์ด๋ฒ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํนํ "ํตํฉ ํ ํด๋ก์ง"๋ฅผ ๋์ ํ๋ ๋์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ธฐ ์ํด ์ฐ๊ฒฐ ํ ์ฌ์์ฑ์ ๋์ ํ์ง ์์์ต๋๋ค. ์ฐ๊ฒฐ ํ์ด ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ฒ๋ณด๋ค ํ ํด๋ก์ง ์ ํ์ ๋ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํนํ ์๋ฒ ๋ชจ๋ํฐ๋ง๊ณผ ๊ด๋ จํ์ฌ ์ฝ๊ฐ์ ํ๊ท๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ค๋ ์์นจ์ ๋๋ ๋น์ ์ด ์ง๋ฉดํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ๋๋ผ์ด๋ฒ์ v3.3.4-rc0 ์ ํธ์ํ์ต๋๋ค. ์ด ๋ฒ์ ์ ์ฌ์ฉํด ๋ณด๊ณ ๊ฒฝํ์ ์๋ ค์ฃผ์๋ฉด ๋๋จํ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๊ธฐ์กด ํฐ์ผ ๊ฐ๊ฐ์ ๋ํด NODE-2267 ์ ๋ํ ์๊ฒฌ์