Heroku для подключения атласа MONGO - PullRequest
1 голос
/ 04 октября 2019

Я новичок в программировании и слежу за книгой "Получение ЗНАЧЕНИЯ". К сожалению, часть о 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

Может ли быть что-то подобное вызывать проблему? Я знаю, что я очень плох в этом, поэтому, пожалуйста, не будь злым

1 Ответ

0 голосов
/ 04 октября 2019

Извините, я нашел решение, но хочу опубликовать его, так как видел много людей с такой же проблемой. Когда вы создаете переменные в Heroku через терминал, по какой-то причине он будет писать ключ НЕ прописными буквами, что отличает его от кода выше. Вход на сайт heroku и добавление переменной заглавными буквами сделали свое дело!

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