MongoTimeoutError: имя: 'MongoNetworkError', [Symbol (mongoErrorContextSymbol)]: {} - PullRequest
0 голосов
/ 02 мая 2020

У меня есть приложение на Node.js. Он отлично работает локально, но когда я пытаюсь развернуть его в docker контейнере, появляется эта ошибка:

MongoTimeoutError: Server selection timed out after 30000 ms
    at Timeout._onTimeout (/cme_api/src/app/node_modules/mongodb/lib/core/sdam/server_selection.js:309:9)
    at listOnTimeout (internal/timers.js:536:17)
    at processTimers (internal/timers.js:480:7) {
  name: 'MongoTimeoutError',
  reason: Error: connect ECONNREFUSED 127.0.0.1:27017
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1136:16) {
    name: 'MongoNetworkError',
    [Symbol(mongoErrorContextSymbol)]: {}
  },
  [Symbol(mongoErrorContextSymbol)]: {}
}
[nodemon] app crashed - waiting for file changes before starting...

Я не очень знаком с этими технологиями и не понимаю, что происходит ,

Вот моя база данных. js:

const mongo = require('mongodb').MongoClient;
require('dotenv').config()

class Database {
    constructor() {
        this.client = null;
    }
    connect() {
        mongo.connect(process.env.URL_DATABASE, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
            if (err) throw err
            this.client = client;
        });
    }
}



const db = new Database();
db.connect();
module.exports = db;

И мое приложение. js:

const express = require('express'),
    app = express();
os = require('os');
const bodyParser = require('body-parser');
const cors = require('cors');
const router = require('./router.js')
require('dotenv').config()


app.use(cors());
app.use(bodyParser.json());

app.use('/api/v1', router);

const port = (process.env.PORT || '3001');

let server = app.listen(port, os.hostname(), () => {
    let host = server.address().address,
        port = server.address().port;
    console.log("Example app listening at http://%s:%s", host, port);
});

Если кто-нибудь может помочь мне с этим, спасибо

1 Ответ

0 голосов
/ 03 мая 2020

Эта ошибка означает, что в вашем контейнере не запущена база данных. Если вы поместите приложение только в контейнер без базы данных, это произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...