dotenv загружается с опозданием, получая неопределенное значение из файла базы данных - PullRequest
0 голосов
/ 01 августа 2020
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
require('dotenv').config({path: __dirname + '/.env'})
const DbConnect = require('./startup/dbconnect')

class App {
    constructor() {
        
        app.use(bodyParser.urlencoded({ extended: false }));
        app.use(bodyParser.json());

        const dbConnect = new DbConnect()
        return dbConnect.initilize()
            .then(() => {
                app.listen(3000, () => {
                    console.log("App is running")
                })
            })
            .catch((err) => {
                console.log("Error", err)
            })
    }
}

exports.module = new App()

connect. js

const mongoose = require('mongoose');

function MongoConnect() {
    let mongoConfiguration = '';
    Object.defineProperty(this, 'mongoConfiguration', {
        set: function (mongoInfo) {
            mongoConfiguration = mongoInfo;
        },
        get: function () {
            return mongoConfiguration;
        }
    });
}

MongoConnect.prototype.initialize = function () {
    
    return new Promise((resolve, reject) => {
        if (this.mongoConfiguration.USERNAME != '' && this.mongoConfiguration.PASSWORD != '') {
            mongoose.connect(`mongodb://${this.mongoConfiguration.USERNAME}:${this.mongoConfiguration.PASSWORD}@${this.mongoConfiguration.host}/${this.mongoConfiguration.db_name}`, { useNewUrlParser: true, useFindAndModify: false });
        } else {
            mongoose.connect(`mongodb://${this.mongoConfiguration.DB_HOST}/${this.mongoConfiguration.DB_NAME}`, { useUnifiedTopology: true, useFindAndModify: false, useNewUrlParser: true });
        }
        var db = mongoose.connection;

        db.on('error', function (error) {
            reject(error.message);
        });
        db.once('open', function () {
            resolve("Mongodb connected!");
        });
    });
};

module.exports = MongoConnect;

dbConfig. js

const MongoConnect = require('../library/mongoose/connect')
const config = require('../config/configuration')

class DbConnect {
    initilize() {
        return new Promise((resolve, reject) => {
            let mongoConnect = new MongoConnect()
            mongoConnect.mongoConfiguration = config.development
            
            return mongoConnect.initialize()
                .then((s) => {
                    resolve(console.log("DB connected successfully"))
                })
                .catch((err) => {
                    reject(console.log("Something went wrong", err))
                })
        })
    }
}

module.exports = DbConnect

Я получаю странный ответ здесь Я записал некоторую конфигурацию базы данных в dbconnect, но он не получает данные из файла .env.

загружается ли файл .env позже, чем файл dbconnect?

Если я поставлю require ('doting'). config () после const DbConnect = require ('./ startup / dbconnect') он говорит undefined, если я поставлю перед const DbConnect = require ('./ startup / dbconnect'), тогда файл подключения db не может получить к нему доступ, почему это происходит?

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