Node.js API не работает при развертывании на AWS - PullRequest
0 голосов
/ 17 марта 2020

У меня есть одно приложение Node.js, и пользователь использует React. Когда я разрабатываю его на своем локальном компьютере, я помещаю проект в подкаталог http://localhost/app, а api - в /api, порт, который я использую, - 5000. Все работает. Вот способ, которым я установил:

Для Node.js, я использую это для установки каталога и маршрутизатора Frontend:

const indexRouter = require('./routers')
app.use('/api', indexRouter)  //to set API path
app.use('/app', express.static('public')) 

сервер прослушивает 5000.

Для React я обновляю пакет. json до:

"homepage": "/app",
"proxy": "http://localhost:5000/"

и с помощью запроса Ax ios я добавляю базовую переменную в начале запроса путь и установите его в '/ api'

Это все хорошо на моем локальном хосте. Однако, когда я развернул его на AWS с Nginx, я не смог выполнить запрос API успешно.

При Nginx я обновляю исходный блок местоположения с

location / {
   try_files $uri $uri/ = 404;
}

до

location /app {
    proxy_pass http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

Когда я go до /root/app, я вижу домашняя страница React (я скопировал файлы сборки React в папку Node js publi c). Тем не менее, он не может получить запрос успешно. Я вижу на своем локальном хосте путь запроса http://localhost: 3050 / api / login , но путь запроса живого сервера http://domain_name / login , я не знаю, почему сервер не может go до /api для запроса.

Я надеюсь, что кто-то может помочь мне в этом.

1 Ответ

0 голосов
/ 19 марта 2020

Поскольку вы создали приложение React с использованием сборки Yarn, вы не сможете использовать прокси, который вы использовали в разработке. Этот метод предназначен только для тестирования в разработке, а не в производстве. Вы можете прочитать больше об этом здесь .

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