我一直在使用MongoDB,Express和NodeJS开发一个简单的Web应用程序。从昨天开始,我似乎无法连接到MongoDB并在终端上继续出现以下错误:
(节点:28265)UnhandledPromiseRejectionWarning:MongoNetworkError:首次连接[Mon时无法连接到服务器[localhost:27017] goNetworkError:getaddrinfo ENOTFOUND localhost本地主机:27017]
在游泳池。 (/Users/Mendis/Desktop/UMISC_Website/node_modules/mongodb-core/lib/topologies/server.js:564:11)
在Pool.emit(events.js:182:13) 在连接。 (/Users/Mendis/Desktop/UMISC_Website/node_modules/mongodb-core/lib/connection/pool.js:317:12)
在Object.onceWrapper(events.js:273:13)
在Connection.emit(events.js:182:13)
插座上的。 (/Users/Mendis/Desktop/UMISC_Website/node_modules/mongodb-core/lib/connection/connection.js:246:50)
在Object.onceWrapper(events.js:273:13)
在Socket.emit(events.js:182:13)
takeErrorNT(内部/流/destroy.js:82:8)
在emitErrorAndCloseNT(内部/流/destroy.js:50:3)
在process._tickCallback(内部/process/next_tick.js:63:19)
(节点:28265)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误是由于将其扔进了内部 nc函数没有catch块,或者拒绝了未使用.catch()处理的诺言。 (拒绝ID:1)
(节点:28265)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,承诺拒绝 t处理将以非零退出代码终止Node.js进程。
这是我的app.js文件中的片段,直到mongoDB连接为止:
/*=========================package/schema imports=============================*/
var passportLocalMongoose = require("passport-local-mongoose"),
methodOverride = require("method-override"),
localStrategy = require("passport-local"),
bodyParser = require("body-parser"),
nodemailer = require("nodemailer"),
passport = require("passport"),
mongoose = require("mongoose"),
express = require("express"),
seedDB = require("./seeds"),
app = express();
var Event = require("./models/event"),
User = require("./models/user");
/*==================================app config================================*/
// connect to umisc database
mongoose.connect("mongodb://localhost:27017/umisc", {useNewUrlParser: true});
由于我对后端开发还很陌生,所以我不确定自己做错了什么...
答案 0 :(得分:1)
您收到的错误是因为您出于安全原因而无法捕获并冒泡并导致实例崩溃。您遇到的问题很可能是由于无法连接到mongo实例。
尝试捕获错误以开始:
mongoose.connect('mongodb://xxxxxxx.xxxx', function(err, db) {
if (err) {
console.log('Unable to connect to the server. Please start the server. Error:', err);
} else {
console.log('Connected to Server successfully!');
}
});
更新:如果本地连接失败,则尝试使用127.0.0.1而不是localhost。更改本地主机名后,有时可能会出现问题。
答案 1 :(得分:0)
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const express = require('express');
const app =express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost:27017/newTodos', {useNewUrlParser: true});