Как запустить прокси и одновременно реагировать на работу сервера? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть папка env.config, где у меня есть 3 среды: dev, test и prod.Я также добавил свою настройку в сценарий "start" в package.json, и он выглядит следующим образом:

"start": "cross-env NODE_ENV=development node server.js"

Я использую cross-env для работы с несколькими средами, и в моем server.js создан прокси.

const express = require('express');
const path = require('path');
const dotenv = require('dotenv');
const proxy = require('http-proxy-middleware');
const bodyParser = require('body-parser');

dotenv.config({
    path: path.join(__dirname, 'env.config', `.env.${process.env.NODE_ENV}`),
});

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.use(express.static(`${__dirname}/dist`));

app.get('/*', (req, res, next) => {

    if (req.url.indexOf('/api') === 0 || req.url.indexOf('public') > -1) {
        return next();
    }

    // FALLBACK
    res.redirect('/');
});

app.use('/api', proxy({
    target: `${process.env.API_HOST}`,
    changeOrigin: false,
    logLevel: 'debug',
    pathRewrite: stringPath => stringPath.replace('/api/', ''),
}));


app.listen(process.env.API_PORT_FRONTEND, () => { });

Когда я отлаживаю server.js, я вижу, что у меня есть доступ к правильным переменным .env.Однако, если я запускаю это, мой клиентский сервер не будет работать.И если я добавлю "react-scripts start" к моей команде "start", мой сервер не будет работать вообще, например:

"start": "cross-env NODE_ENV=development node server.js react-scripts start"

Так что мой вопрос: как мне настроить его для одновременной работы обоих?Я знаю, что, возможно, я неправильно понимаю всю концепцию, но если бы кто-то мог сделать это хотя бы немного понятнее, это очень помогло бы:)

...