#javascript #reactjs #express
#javascript #reactjs #экспресс
Вопрос:
У меня возникли проблемы с получением приложения React для работы с серверной частью express в процессе производства. На моем сервере я работаю nginx
с a conf
, который выглядит так:
server {
listen 80 default_server;
server_name _;
# react app amp; front-end files
location / {
root /var/www/my-site;
try_files $uri /index.html;
}
# node api reverse proxy
location /api/ {
proxy_pass http://localhost:3000/;
}
}
Содержимое папки react build
находится внутри /var/www/my-site
. Я ввожу IP-адрес своего сервера в браузере, и он загружает индексную страницу без каких-либо проблем. Однако, когда я нажимаю кнопку входа в систему, чтобы вызвать API входа, я получаю следующую ошибку: http://xxx.xxx.xx.x/api/onboard/login 404 (Not Found)
В моем приложении React, которое у меня есть "proxy": "http://localhost:3000"
package.json
(которое, как я понимаю, бесполезно в производстве, но оно работает локально на моем компьютере с локальным сервером express), и мои конечные точки API выглядят примерно так: /api/onboard/login
(я использую выборку)
Теперь на экспресс-сервере мой server.js
такой:
const cors = require('cors');
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
const PORT = 3000;
app.use(cors({ credentials: true, origin: 'http://localhost:3000' }));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(function(_, res, next) {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
require('./app/routes/onboard-routes')(app);
//etc...
app.listen(PORT, () => console.log(`Listening on http://loclalhost:${PORT}`));
пример маршрута:
app.post(
'/api/onboard/login',
[verifyLogin.checkLoginFields],
controller.login
);
Я запускаю сервер с помощью NODE_ENV=production forever start server.js
Просто чтобы уточнить, что сервер работает на моем локальном компьютере с использованием localhost
и с моим приложением React, используя все приведенные выше настройки. Это просто не работает на моем удаленном производственном сервере.
Может ли кто-нибудь указать мне правильное направление? Не уверен, что я делаю неправильно. Спасибо
Комментарии:
1. итак, в ошибке
http://xxx.xxx.xx.x/api/onboard/login
указан фактический маршрут для доступа к серверному серверу?, если нет, то, я думаю, вам нужно добавить базовый URL или IP вашего сервера2. Ну, xxx.xxx.xx.x совпадает с IP-адресом моего сервера. Чтобы загрузить веб-сайт, я бы ввел xxx.xxx.xx.x в браузер. Так разве маршрут в ошибке не правильный?
3. попробуйте маршрут с помощью postman, если он работает, и если он работает, попробуйте подключить локальный интерфейс к серверному серверу, а не к локальному
4. Только что пробовал с postman. Это также не работает с postman. Та же ошибка 404.
5. это означает, что сервер не работает с этой конечной точкой, необходимо отладить это, почему сервер не попадает туда, лучше посмотреть node.js сторона