Доступ к экспресс-маршрутам на герою напрямую, не обслуживая приложение реагировать - PullRequest
0 голосов
/ 22 мая 2019

Экспресс-маршруты не могут быть достигнуты напрямую, не обслуживая приложение-реактив на heroku.

Я разработал приложение-реактив, которое работает с бэкэндом node.js / express на heroku.Все в приложении-реактиве работает нормально.

Теперь мне нужно получить доступ к экспресс-маршруту (например, https://example.com/api/info), который совершает вызов в dong Монго и должен возвращать только немного JSON.

Проблема в том, что express всегда обслуживает реагирующее приложение. Однако из реактивного приложения я могу получить доступ к экспресс-маршрутам и использовать их, например, для входа / регистрации (https://example.com/api/users/login). Я просто не могу получить к ним доступв производстве на heroku напрямую, не обслуживая приложениеact.

Поскольку heroku определяет порт, на котором живет приложение express, я не могу добавить прокси-сервер к пакету реагирования приложения. json

Реактивное приложение создается в папке root> client. Ниже находится корневой файл index.js сервера node.js / express

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const passport = require('passport');

const keys = require('./config/keys');

const auth = require('./routes/api/auth');
const mail = require('./routes/api/mail');
const newsletter = require('./routes/api/newsletter');

//connect to mongoDB
mongoose.connect(keys.mongoURI)
  .then(() => console.log('MongoDB Connected'))
  .catch(err => console.log(err));

const app = express();

// Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());


// Passport Config
app.use(passport.initialize());
require('./services/passportJwt')(passport);

// Routes
app.use('/api/users', auth);
app.use('/api/mail', mail);
app.use('/api/newsletter', newsletter);

app.get('/api/info', (req, res) => { //ROUTE DOESN'T WORK, SERVES REACT-APP
  res.json({ msg: "Some Info" });
});

// Serve React App in Production
if (process.env.NODE_ENV === 'production') {

// Express will serve up production assets, main.js/main.css
  app.use(express.static('client/build'));

// Express will serve up the index.html file if it doesn't recognize the route
  const path = require('path');
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  });
}

// Use Heroku port or 5000 when in dev
const PORT = process.env.PORT || 5000;

app.listen(PORT);

Ожидаемый результат:

При достижении "https://example.com/api/info" должен быть получен вывод в формате JSON {" msg ":" Некоторая информация "}. Вместо этого подано реагирующее приложение, а реагирующее приложение не распознает маршрут" api / info"в реагирующем маршрутизаторе.

Заранее спасибо заВаша помощь.

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