Я новичок в программировании и слежу за книгой "Получение ЗНАЧЕНИЯ". К сожалению, часть о MONGODB и HEROKU использует MLAB, и я хотел бы использовать AtlasMongoDB. Итак, мой код для подключения к базе данных -
const mongoose = require ('mongoose');
let dbURI = 'mongodb://localhost/Loc8r';
if (process.env.NODE_ENV === 'production') {dbURI = process.env.MONGODB_URI;
}
mongoose.connect(dbURI, { useNewUrlParser: true, useCreateIndex: true});
, когда я запускаю свой код, локально объявляя PROCESS.ENV.NODE_ENV и MONGODB_URI, приложение прекрасно подключается к базе данных (код ниже)
NODE_ENV=production MONGODB_URI='mongodb+srv://username:password@cluster0-jbcwd.azure.mongodb.net/Loc8r?retryWrites=true&w=majority' nodemon
Когда я развернул приложение в Heroku, я получил следующую ошибку
2019-10-03T21:34:53.253779+00:00 app[web.1]: /app/node_modules/mongoose/lib/connection.js:520
2019-10-03T21:34:53.253781+00:00 app[web.1]: throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +
2019-10-03T21:34:53.253783+00:00 app[web.1]: ^
2019-10-03T21:34:53.257066+00:00 app[web.1]: Error [MongooseError]: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
Я объявил обе переменные в Heroku (node_env равен production, а mongodb_uri равен mongodb + srv: //имя пользователя: password@cluster0-jbcwd.azure.mongodb.net/Loc8r? retryWrites = true)
Не могли бы вы мне помочь? Я понял, что запуск объявления нодмонов MONGODB_URI без кавычек также дает ошибку (ниже).
NODE_ENV=production MONGODB_URI=mongodb+srv://username:password@cluster0-jbcwd.azure.mongodb.net/Loc8r?retryWrites=true&w=majority nodemon
Может ли быть что-то подобное вызывать проблему? Я знаю, что я очень плох в этом, поэтому, пожалуйста, не будь злым