Как развернуть стек MERN на хостинге?

Решение состоит в том, чтобы добровольно поставить ошибку в запросе и напечатать сообщение об ошибке:

//Connection to the database
$co = new PDO('mysql:dbname=myDB;host=localhost','root','');
//We allow to print the errors whenever there is one
$co->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//We create our prepared statement
$stmt = $co->prepare("ELECT * FROM Person WHERE age=:age"); //I removed the 'S' of 'SELECT'
$stmt->bindValue(':age','18',PDO::PARAM_STR);
try {
    $stmt->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}

Стандартный вывод:

SQLSTATE [42000]: Синтаксис ошибка или нарушение доступа: [...] рядом с «ELECT * FROM Person WHERE age = 18» в строке 1

Важно отметить, что он печатает только первые 80 символов запрос.

0
задан Meghan King 24 February 2019 в 17:54
поделиться

3 ответа

Во внешнем интерфейсе вы захотите настроить конфигурацию axios, которая будет указывать на правильный URL-адрес в зависимости от рабочей среды:

utils / axiosConfig.js (Мне нравится использовать имя app, чтобы оно соответствовало express, но вы можете назвать его как угодно)

import axios from 'axios';

const env = process.env.NODE_ENV; // current environment

export const app = axios.create({
  baseURL:
    env === 'production'
      ? 'http://example.com/api/' // production
      : 'http://localhost:5000/api/', // development
});

Затем вы можете использовать эту конфигурацию везде, где вы делаете вызов API:

import { app } from '../utils/axiosConfig.js';

app.get("example");
app.post("example");
...etc

Теперь он может отправлять запросы на http://localhost:5000/api/example или http://example.com/api/example.

В вашем client package.json вы можете указать среду:

 "scripts": {
    "start": "NODE_ENV=development webpack-dev-server",
    "build": "NODE_ENV=production webpack",
    "stage": "NODE_ENV=staging webpack",
    "test": "NODE_ENV=testing jest --watchAll --coverage",
  },
0
ответ дан Matt Carlotta 24 February 2019 в 17:54
поделиться

Да, вам придется развернуть свой сервис на хостинге (уже создан). Есть несколько решений, которые вы можете посмотреть, есть Digital Ocean Посмотрите на эти несколько ссылок

, как настроить приложение nodejs для prod

[111 ] как установить mongodb на ubuntu

Также есть Heroku. для этого есть полное руководство для этого здесь

подготовка и развертывание стека Mern .

Как я уже сказал, есть и несколько других решений. Надеюсь, это поможет

0
ответ дан Jazib 24 February 2019 в 17:54
поделиться

В настоящее время все вызовы API используют сообщение axios post для http: // localhost: 4000 / , что, как я предполагаю, также не будет работать на сервере.

Вы правы, это не сработает. Это потому, что если пользователи получат ваше приложение React , все вызовы API будут перенаправлены на их localhost . Который не поддерживает ваш API

Когда я пытаюсь запустить его из службы хостинга так же, как я делал ранее, он говорит, что не может подключиться к базе данных, что Я полагаю, это связано с тем, что на моей машине соединение не открыто.

Это, вероятно, потому что URL MongoDB, вероятно, все еще имеет значение, похожее на 'mongodb://localhost:27017/myapp. Здесь есть 2 основных варианта.

  1. Воспользуйтесь «услугой размещения базы данных» , например MongoDB Atlas , затем вам потребуется изменить URL-адрес вашей базы данных, чтобы он указывал на предоставленный службой
  2. Разместите базу данных на своем сервере , которая будет работать с localhost URL

Я искал в Интернете информацию о развертывание стека MERN, но все, что я нашел, обсуждают его с точки зрения хостинга на AWS EC2, а это не то, чем я буду заниматься.

  • Любой сервер, на котором у вас есть контроль и гибкость , будет работать в этом сценарии. Вы можете разместить все свои вещи (сервер, интерфейс и базу данных) на нем, если хотите. EC2 может делать все это , но это не единственный вариант. Вы также можете проверить аналогичные продукты от Microsoft и Google, и т.д ...
  • Другим способом является развертывание каждого артефакта отдельно , который является более масштабируемым, но также имеет свою сложность. Если вы идете таким образом, вы можете рассмотреть Docker контейнеры и Kubernetes , которые полезны для организации распределенных систем
[119 ] Редактировать

Поскольку вы используете MongoDB Atlas, убедитесь, что вы занесли в белый список IP-адрес вашего сервера

0
ответ дан molamk 24 February 2019 в 17:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: