So I am making a web app using Express.JS and MongoDB and when I try to run it locally , it works, but when I run it with my aws Ubuntu 20.04 machine it gives me the following error:
(node:13452) UnhandledPromiseRejectionWarning: TypeError: [objectOptions,urlOptions,exports.DEFAULT_OPTIONS].flatMap is not a function
at parseOptions (/home/ubuntu/tylertv/node_modules/mongodb/lib/connection_string.js:258:77)
at new MongoClient (/home/ubuntu/tylertv/node_modules/mongodb/lib/mongo_client.js:62:63)
at Promise (/home/ubuntu/tylertv/node_modules/mongoose/lib/connection.js:784:16)
at new Promise (<anonymous>)
at NativeConnection.Connection.openUri (/home/ubuntu/tylertv/node_modules/mongoose/lib/connection.js:781:19)
at _mongoose._promiseOrCallback.cb (/home/ubuntu/tylertv/node_modules/mongoose/lib/index.js:342:10)
at Promise (/home/ubuntu/tylertv/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5)
at new Promise (<anonymous>)
at promiseOrCallback (/home/ubuntu/tylertv/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/home/ubuntu/tylertv/node_modules/mongoose/lib/index.js:1181:10)
(node:13452) 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: 2)
(node:13452) [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.
I have no clue why this is doing this all I have installed is mongodb,npm, and node.
https://www.github.com/tttylerr/tylertv
^ My source code is server.js mainly
CodePudding user response:
This could happen by several reasons:
- Do you have MongoDB installed on you AWS machine?
- Do versions of Node.js/NPM/MongoDB mismatch on your local machine and on AWS machine?
P.S. If that error occurs on startup, then the error can be interpreted as - "Couldn't connect to MongoDB instance". Check that stuff related to Mongo.
CodePudding user response:
mongoose.connect()
returns a promise, see docs, that you're not handling.
Handling the exception will make your code more robust and give you a more meaningful error message:
mongoose.connect('mongodb://localhost:27017/login', {
useNewUrlParser: true,
useUnifiedTopology: true
}).catch((e) => {console.log(e)});
I suspect that you haven't set up your MongoDB on your AWS machine.