【发布时间】:2020-06-21 12:05:51
【问题描述】:
我是 React 和 Node 的新手,尽管几天后我的代码没有错误,但今天我的终端开始出现错误,我无法连接到我的 mongo 数据库。我使用 node server.js 命令运行我的服务器,但出现错误。任何人都可以帮助找到解决方案吗?谢谢!
错误
服务器正在端口 5000 上运行 (node:3339) DeprecationWarning:当前的服务器发现和监控引擎已被弃用,并将在未来的版本中删除。要使用新的服务器发现和监控引擎,请将选项 { useUnifiedTopology: true } 传递给 MongoClient 构造函数。 (node:3339) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [cluster0-shard-00-00-z8g0w.mongodb.net:27017] on first connect [MongoNetworkError: connection 4 to cluster0-shard-00-00-z8g0w。 mongodb.net:27017 关闭 在 TLSSocket。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connection.js:372:9) 在 Object.onceWrapper (events.js:300:26) 在 TLSSocket.emit (events.js:210:5) 在 net.js:659:12 在 TCP.done (_tls_wrap.js:481:7) { 名称:'MongoNetworkError', }] 在游泳池。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/topologies/server.js:433:11) 在 Pool.emit (events.js:210:5) 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/pool.js:577:14 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/pool.js:1021:9 在回调(/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:93:5) 在 /Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:113:7 在 _callback (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:320:5) 在 Connection.errorHandler (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connect.js:336:5) 在 Object.onceWrapper (events.js:300:26) 在 Connection.emit (events.js:210:5) 在 TLSSocket。 (/Users/petka/Desktop/react-recipesnew/node_modules/mongodb/lib/core/connection/connection.js:370:12) 在 Object.onceWrapper (events.js:300:26) 在 TLSSocket.emit (events.js:210:5) 在 net.js:659:12 在 TCP.done (_tls_wrap.js:481:7) (节点:3339)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:3339)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
server.js
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const http = require('http');
const socketIO = require('socket.io');
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
const server = http.createServer(app)
//create the socket using the service instance
const io = socketIO(server)
io.on('connection', socket => {
console.log('New user connected.')
socket.on('infoEvent', (information) => {
console.log(`Information received: ${information}`)
io.sockets.emit('infoEvent', information)
})
socket.on('disconnect', () => {
console.log('User disconnected')
})
})
require('dotenv').config();
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, { useNewUrlParser:true, useCreateIndex:true});
const connection = mongoose.connection;
//when the connection is open
connection.once('open', () => {
console.log("MongoDB connection established successfully")
})
const userrecipesRouter = require('./routes/userrecipes');
const usersRouter = require('./routes/users');
//require and use the files route
app.use('/userrecipes', userrecipesRouter);
app.use('/users', usersRouter);
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
【问题讨论】:
-
您的数据库托管在哪里?它还在运行/健康吗?