как настроить таблицу прокси в create-реагировать-приложение - PullRequest
0 голосов
/ 09 октября 2018

У меня есть бэкэнд-сервер API, интерфейс обслуживается другим сервером, созданным create-react-app, и мне нужно проксировать определенный набор запросов от сервера CRA к серверу API.

Я пытаюсь использовать http-proxy-middleware.Для простого случая использования, когда есть только одно правило, оно работает просто отлично.Но мне не повезло с использованием нескольких правил одновременно.

Я следовал документации и придумал что-то вроде этого (содержание setupProxy.js).

const proxy = require('http-proxy-middleware');

const proxyTable = {
    '/auth/google': 'http://localhost:5000/',
    '/api/*': 'http://localhost:5000'
};

const options = {
    target: 'http://localhost:3000',
    router: proxyTable
};

module.exports = function(app) {
    app.use(proxy(options));
};

Прежде всего, я не знаю о свойстве target в options, но согласно документации, он устанавливает целевой URL для каждого запроса, который не являетсяуказано в proxyTable.Что ж, я просто хочу оставить все мои другие запросы без изменений, поэтому я установил значение, совпадающее с адресом, на котором работает CRA (не уверен, что это правильный подход, документация не ясна по этому поводу).

Проблема, с которой я сталкиваюсь, заключается в том, что, если я пытаюсь перенаправить запрос назад, возникает эта ошибка.

Error occurred while trying to proxy request / from localhost:3000 to http://localhost:3000 (EADDRNOTAVAIL)

Я не уверен, что японять эту ошибку.Если я изменю значение target, появятся некоторые другие сообщения об ошибках, подобные этому, которые будут отображаться, и, кажется, что замечание работает.

Любая помощь будет принята.

1 Ответ

0 голосов
/ 09 октября 2018

Хорошо, я нашел исправление, используя промежуточное ПО для прокси несколько раз - по одному для каждого правила.

Для всех, кому интересно,

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
    app.use(proxy('/api/*', { target: 'http://localhost:5000' }));
    app.use(proxy('/auth/google', { target: 'http://localhost:5000' }));
};

Но прокси-таблица все еще не работает, поэтому, если вы знаете, как это сделать, поделитесь.

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