Как загрузить URI mongodb из файла .env на героку? - PullRequest
0 голосов
/ 24 сентября 2019

Я новичок в стеке MERN и развернул свое приложение nodejs на heroku, но приложение не может подключиться к атласу mongodb, и данные из базы данных не загружаются, когда я даю mongodb uri через переменную окружения. Работает нормальнокогда я непосредственно даю URI через переменную. Также при локальном запуске приложение без проблем подключается к атласу с помощью переменной окружения. Любая идея, почему она не работает на heroku и как это исправить?

server.js

const express = require('express'); //nodejs framework for creating web apps
const cors = require('cors');
const mongoose = require('mongoose');
const path = require('path');

require('dotenv').config(); //for setting environment variables on server

const app = express(); //creating the app

//Serve static assets if in production
if(process.env.NODE_ENV ==='production'){
    //Set static folder
    app.use(express.static('client/build'));

    app.get('*',(req, res) => {
        res.sendFile(path.resolve(__dirname,'client','build','index.html'));
    });
}
////////////////////////////////////////
const port = process.env.PORT || 5000;

app.use(cors()); //for cross origin resource sharing ie.cross domain requests
app.use(express.json()); //for handling json data

const uri = process.env.ATLAS_URI;
//its works fine when I give it as below
//const uri="mongodb+srv://jose:<password>@exercisecluster-rmqkg.gcp.mongodb.net/test?retryWrites=true&w=majority"


mongoose.connect(uri,{ useNewUrlParser: true, useCreateIndex: true ,useUnifiedTopology: true });
const connection = mongoose.connection;
connection.once('open',() => {
    console.log('Database connection established successfully');
})


const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');

//executes the files in the second argument when user enters the url 'rooturl/firstargument'
app.use('/exercises',exercisesRouter);
app.use('/users',usersRouter);

app.listen(port,() => {
    console.log(`Server is running on port:${port}`);
});

1 Ответ

0 голосов
/ 24 сентября 2019

В вашем проекте heroku вам нужно установить переменную env ATLAS_URI и ввести значение для вашего mongodb uri.

Для этого перейдите на вкладку настроек в вашем приложении heroku, затем нажмите на раскрытие конфигурации.vars, а затем введите ключ и значение для вашего монго URI.

Надеюсь, это поможет

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