Приложение React не взаимодействует с серверной частью express

#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 сторона