24.10.10 12:01 작성
·
25
0
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('suzil:server');
var http = require('http');
const mongoose = require("mongoose");
const userConfig = require("../config/userConfig.json");
let db = mongoose.connection;
db.on("error",console.error);
db.once("open",()=>{
console.log("Connected to mongo Server");
});
mongoose.connect(
`mongodb+srv://wiyuchan1021:${userConfig.PW}>@suzilo.i1je5.mongodb.net/suzilo?retryWrites=true&w=majority`,
{useNewUrlParser: true, useUnifiedTopology: true}
)
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**f
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
코드 실행하면
PS C:\Users\yuchan\suzil> npm start
> suzil@0.0.0 start
> nodemon ./bin/www
[nodemon] 3.1.7
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting node ./bin/www
(node:13580) [MONGODB DRIVER] Warning: useNewUrlParser is a deprecated option: useNewUrlParser has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version
(Use node --trace-warnings ...
to show where the warning was created)
(node:13580) [MONGODB DRIVER] Warning: useUnifiedTopology is a deprecated option: useUnifiedTopology has no effect since Node.js Driver version 4.0.0 and will be removed in the next major version
MongoServerError: bad auth : authentication failed
at Connection.sendCommand (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connection.js:289:27)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Connection.command (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connection.js:312:26)
at async continueScramConversation (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:131:15)
at async executeScram (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:80:5)
at async ScramSHA1.auth (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:39:16)
at async performInitialHandshake (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connect.js:104:13)
at async connect (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connect.js:24:9) {
errorResponse: {
ok: 0,
errmsg: 'bad auth : authentication failed',
code: 8000,
codeName: 'AtlasError'
},
ok: 0,
code: 8000,
codeName: 'AtlasError',
connectionGeneration: 0,
[Symbol(errorLabels)]: Set(2) { 'HandshakeError', 'ResetPool' }
}
node:internal/process/promises:391
triggerUncaughtException(err, true /* fromPromise */);
^
MongoServerError: bad auth : authentication failed
at Connection.sendCommand (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connection.js:289:27)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Connection.command (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connection.js:312:26)
at async continueScramConversation (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:131:15)
at async executeScram (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:80:5)
at async ScramSHA1.auth (C:\Users\yuchan\node_modules\mongodb\lib\cmap\auth\scram.js:39:16)
at async performInitialHandshake (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connect.js:104:13)
at async connect (C:\Users\yuchan\node_modules\mongodb\lib\cmap\connect.js:24:9) {
errorResponse: {
ok: 0,
errmsg: 'bad auth : authentication failed',
code: 8000,
codeName: 'AtlasError'
},
ok: 0,
code: 8000,
codeName: 'AtlasError',
connectionGeneration: 0,
[Symbol(errorLabels)]: Set(2) { 'HandshakeError', 'ResetPool' }
}
Node.js v20.17.0
[nodemon] app crashed - waiting for file changes before starting...
이러한 오류가 터미널에 뜨는데 왜 그런걸까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
wiyuchan1021님이 겪고 계신 문제는 MongoDB Atlas와의 인증 관련 오류로 보입니다. 이 문제를 해결하기 위해 몇 가지 확인해야 할 사항을 안내해 드리겠습니다.
먼저 userConfig.PW
에 담긴 비밀번호가 올바른지 확인해 주세요. 만약에 비밀번호가 변경되었다면, 새로운 비밀번호로 업데이트해 주셔야 합니다.
@
같은 특수 문자는 %40
과 같이 URL 인코딩이 필수입니다.useNewUrlParser
와 useUnifiedTopology
옵션은 더 이상 필요하지 않다고 언급하고 있습니다. 따라서 제거해도 문제가 없습니다.위의 내용을 참고하셔서 다시 시도해 보시기 바랍니다.
추가적으로 관련된 기존답변을 참고하실 수 있는 게시글을 추천드립니다:
- “Mong Server 연결시 경고창이 뜹니다.” - 사용자 인증 및 연결과 관련한 문제 해결 방법이 유사할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.