#mongodb #react-native #heroku #localhost #expo
#mongodb #react-native #heroku #localhost #выставка
Вопрос:
итак, я заканчиваю сборку своего приложения с помощью mongodb express react native с expo, и я пытаюсь сменить локальный хост-сервер с портом 3000 на реальный хост-сервер с помощью horuko и mongodb.
- я был собран и подключил MongoDB к heroku, как в документах, я перехожу в настройки в heroku и вставляю momngodb_uri, что-то вроде :
mongodb srv://admin:admin@lior.rva16.mongodb.net/<dbname>?retryWrites=trueamp;w=majority
- в моем индексе server.js я переключаюсь с местного на :
const port = process.env.PORT;// here i dont really have port (i dont know what to put inside) mongoose .connect(process.env.MONGO_URI, {///this line is - >mongodb srv://admin:admin@lior.rva16.mongodb.net/<dbname>?retryWrites=trueamp;w=majority useNewUrlParser: true, useUnifiedTopology: true, })
это мой env-файл:
MONGO_URI=mongodb srv://admin:admin@lior.rva16.mongodb.net/<dbname>?retryWrites=trueamp;w=majority
JWT_SECRET=LKDSLCX9IOZiJS9IAJ768
- на моей стороне клиента весь URL-адрес запроса выглядит так:
await indexApi.post("/signout");
- и до сих пор я использовал NGROK для подключения и проверки моей базы данных, поэтому базовый URL-адрес до сих пор был:
export default axios.create({ baseURL: "http://cca1237fb2de.ngrok.io", //ngrok http 3000 });
проблема:
я получаю ошибки, которые показывают все, что не может подключиться к URL-адресу, он не находит URL-адрес сервера.
(обратите внимание, что с localhost все работало правильно)
вопрос:
- как я могу подключить свое приложение к серверу heroku
- что такое мой новый baseUrl? (я пытался выполнить {process.env.MongoDB_Uri}, но тоже сбой …)
- большой вопрос: «как я могу заменить сервер с локального на реальный сервер в heroku на mongo»
Ответ №1:
Лучший способ сделать это — иметь переменную среды, в которой хранится ваш производственный / промежуточный MONGO_URL. На вашем локальном компьютере вы можете использовать dotenv
package для извлечения значений из .env
файлов и переменных среды, которые вы устанавливаете при развертывании приложения heroku.
Local .env
MONGO_URL=mymongourl
Вы можете установить переменные среды в своем приложении heroku, перейдя в Настройки> Параметры конфигурации. Там должна быть кнопка с именем Reveal Config Vars
. Нажмите на это, и это даст вам интерфейс для добавления дополнительных переменных среды.
Код
const dotenv = require('dotenv')
dotenv.config()
...other code
const mongoURL = process.env.MONGO_URL
Комментарии:
1. это именно то, что у меня есть… но подключиться не удается, он не находит его … он потерпел неудачу с ошибкой: ошибка запроса с кодом состояния 404]
2. У вас должен быть
.env
файл в вашем файле gitignore. Это никогда не должно быть зафиксировано. Вы также никогда не должны раскрывать свои переменные env в сообщении stackoverflow или в своем репозитории. Переместите procfile в корень вашего репозитория и сделайте ваш корневой package.json скриптомcd server amp;amp; node index.js
. Измените веб-команду вашего procfile на npm run start, и это должно решить вашу проблему. Я думаю, что происходит то, что ваш сервер даже не запускается, потому что heroku не переходит в каталог сервера и не запускает его. Вы также должны использовать cli heroku для диагностики проблем.