Я начинаю изучать учебник по стеку MERN. Сначала я создал приложение реагирования, добавил каталог с именем backend, установил express, cors, express и dotenv, затем создал server.js и добавил некоторый код, но после подключения к атласу mongodb я получаю ошибку ниже:
(узел: 5828) UnhandledPromiseRejectionWarning: MongoTimeoutError: Тайм-аут выбора сервера через 30000 мс. (C: \ Users \ Lenovo \ Desktop \ REACTion \ mernapp \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ topology.js: 878: 9) в listOnTimeout (internal / timers.js: 531: 17) в processTimers (internal / timers.js: 475: 7) (узел: 5828) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо в результате выброса внутри асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 5828) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения. [nodemon] перезапуск из-за изменений ... [nodemon] запуск node server.js
Сервер работает на порту: 5000 Ошибка подключения! MongoTimeoutError: Тайм-аут выбора сервера после 30000 мс. (C: \ Users \ Lenovo \ Desktop \ REACTion \ mernapp \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ topology.js: 878: 9) в listOnTimeout (internal / timers.js: 531: 17) в processTimers (internal / timers.js: 475: 7) {имя: 'MongoTimeoutError', причина: MongoNetworkError: соединение 2 с cluster0-shard-00-01-l6mnq.gcp.mongodb.net:27017 закрыто в TLSSocket. (C: \ Users \ Lenovo \ Desktop \ REACTion \ mernapp \ backend \ node_modules \ mongodb \ lib \ core \ connection \ connection.js: 356: 9) в Object.onceWrapper (events.js: 288: 20) в TLSSocket. emit (events.js: 200: 13) в net.js: 586: 12 в TCP.done (_tls_wrap.js: 479: 7) {name: 'MongoNetworkError', errorLabels: ['TransientTransactionError'], [Symbol (mongoErrorContextSymbol))]: {}}, [Symbol (mongoErrorContextSymbol)]: {}}
Ниже приведен мой код для файла server.js. Я скопировал URI из атласа MongoDB и вставил его в файл .env.
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
const uri = process.env.ATLAS_URI;
mongoose
.connect(uri, { useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true })
.then(() => {
console.log('Connected to database!');
})
.catch(error => {
console.log('Connection failed!');
console.log(error);
});
const connection = mongoose.connection;
connection.once('open', () => {
console.log('MongoDB database connection established successfully');
});
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});