Reputation: 189
i need help!!! I tried connecting to mongodb atlas with my connection string but I'm unable to. I'm not sure how to proceed. i have a barebones application. I'm getting a connection error (a mongooseServerSelectionError) and an unhandled Promise Rejection Warning.
Here is the error:
connection error: MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
at new MongooseServerSelectionError (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/error/serverSelection.js:22:11)
at NativeConnection.Connection.openUri (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/connection.js:808:32)
at Mongoose.connect (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/index.js:333:15)
at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/db/index.js:4:10)
at Module._compile (internal/modules/cjs/loader.js:1157:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Module.require (internal/modules/cjs/loader.js:1043:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/bin.js:33:10)
at Module._compile (internal/modules/cjs/loader.js:1157:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
message: 'connect ECONNREFUSED 127.0.0.1:27017',
name: 'MongooseServerSelectionError',
reason: TopologyDescription {
type: 'Single',
setName: null,
maxSetVersion: null,
maxElectionId: null,
servers: Map { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
compatibilityError: null,
logicalSessionTimeoutMinutes: null,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
commonWireVersion: null
},
[Symbol(mongoErrorContextSymbol)]: {}
}
(node:9182) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
at new MongooseServerSelectionError (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/error/serverSelection.js:22:11)
at NativeConnection.Connection.openUri (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/connection.js:808:32)
at Mongoose.connect (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/index.js:333:15)
at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/db/index.js:4:10)
at Module._compile (internal/modules/cjs/loader.js:1157:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Module.require (internal/modules/cjs/loader.js:1043:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/bin.js:33:10)
at Module._compile (internal/modules/cjs/loader.js:1157:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load (internal/modules/cjs/loader.js:900:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
(node:9182) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9182) [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.
Here is my code:
i give directions for which uri to connect to, set up the connection through mongoose, export the db and open the connection in app.js...
inside db/index.js:
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
// const uri = require('../../keys.js').mongodb.dbURI;
mongoose.connect("mongodb://localhost/test", { useNewUrlParser: true, useUnifiedTopology: true});
// mongoose.connect(process.env.MONGODB_URL || uri, { useNewUrlParser: true, useUnifiedTopology: true});
var db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error: "));
module.exports = db;
Inside app.js:
console.log('NODE_ENV :::', process.env.NODE_ENV);
if (process.env.NODE_ENV === 'PRODUCTION') {
var app = require('./prod.app.js');
} else {
var app = require('./dev.app.js');
}
var express = require('express');
var path = require('path');
var routes = require('./db/routes/index.js');
var http = require('http');
var favicon = require('serve-favicon');
var PORT = 3000;
/*
* shared code in production and development
*/
// favicon - 3 ways - middleware, static, html
app.use(favicon(path.join(__dirname, '../public/images/favicon.ico')));
// app.use('/favicon.ico', express.static(path.join(__dirname, '../public/images/favicon.ico')));
// app.use('images/favicon.ico', express.static(path.join(__dirname, '../public/images/favicon.ico')));
app.use(express.json());
app.use(express.urlencoded({ extended: true}));
// static files
app.use(express.static(path.join(__dirname, "../client")));
app.use(express.static(path.join(__dirname, "../public")));
// db - mongo
var db = require('./db/index.js');
db.once("open", function (err) {
// console.log('db::: ', db);
if (err) {
return console.error(err);
} else {
console.log("Successfully connected to mongodb");
}
})
// routes
app.use(routes);
// serve index.html if can't find the route
app.use('*', function (req, res, next) {
console.log("...serving index.html file from the public folder")
res.sendFile(path.join(__dirname, '../public/index.html'));
});
// create server
var server = http.createServer(app);
server.listen(PORT);
console.log(`server listening on post ${PORT}`);
thank you for looking into this for me
Upvotes: 4
Views: 14015
Reputation: 64
This worked for me. I first changed the ip address to 0.0.0.0/0 and removed app.use(cores()). Then I downloaded mongoDB compass and connected to the data base. After that the same URI was used in index.js. There is a difference in inputting password in the URI and Compass. In compass you don't need to encode the password(if you have special characters). If you connect using compass and paste that link in the index.js you don't need to encode the password.
Upvotes: 1
Reputation: 101
Try to check your internet connection and if you having your IP address correctly.
https://github.com/Automattic/mongoose/issues/8180#issuecomment-552161146
Upvotes: 1
Reputation: 37
set your current ip address as 0.0.0.0/0 in mongoDB ATLAS in Connection ip address. It will allow to connect all ip address.
Upvotes: 2
Reputation: 337
bro update the (ip) address in mongodb atlus.IT WILL HELP YOU
Upvotes: 1
Reputation: 81
Did you have this line in your app.js app.use(cors())
?
Try to delete this line and delete everything that involves cors.
If this don't work, check your IP Whitelist inside Network Access in MongoDB Atlas and add your current IP or write this 0.0.0.0/0 to allow all IPs.
Upvotes: 7
Reputation: 162
check your IP is enabled by mongodb atlas. you should give access to your computer IP address from mongodb atlas. go to the network access (left side bar) enter your IP or enter 0.0.0.0 to access all IP.
Upvotes: 4
Reputation: 1
Check if you had started database in a terminal by ./mongod
Upvotes: 0
Reputation: 35
Try to add the url provided by Atlas to connect your app:
mongoose.connect("<URLprovidedByAtlas>", { useNewUrlParser: true, useUnifiedTopology: true});
Upvotes: 1