React-Router и конфликт маршрутизации Коа - PullRequest
0 голосов
/ 01 мая 2020

Я создаю SPA с React и платформой Koa.

Я использовал React-Router для маршрутизации страниц подкачки, таких как:

<BrowserRouter>
    <Route exact path="/" component={Main} />
    <Route exact path="/channels" component={Channels} />
    <Route exact path="/information" component={Information} />
    <Route exact path="/upload" component={Upload} />
</BrowserRouter>

и использую Koa-Router для маршрутизации таких вещей, как API :

const useStatic = require('koa-static');

app.use(useStatic('../react/build'));
app.use(require('koa-mount')('/server-static', useStatic('./static')));

const Router = require('./route');

app.use(Router.routes());
app.use(Router.allowedMethods());

Я думаю, Router.routes() вещи не важны, поэтому я просто оставлю это так. Он просто обрабатывает запросы API на /data/~~~.

, поэтому страница, построенная в React, будет обслуживаться на /, и если я переместлю страницу с элементом Link, она будет работать нормально.

но если я переместлю страницу с вводом URL (например, domain.com/channels) или просто нажму F5, чтобы обновить sh страницу, он просто выбрасывает страницу Koa 404. (отображается только текст «404»)

, и если я перехожу на страницу API с вводом URL (domain.com/data/getChannels?id=1), React удерживает мой запрос API и просто показывает страницу React 404. (но на самом деле запрос API с топором ios работает нормально, не знаю, почему)

Почему возникает этот конфликт?

Редактировать: проблема, связанная с тем, что бросание 404 решается просто отправкой ответа 404 на страницу индекса React с koa-send, но URL-адрес API по-прежнему показывает страницу React. Я думаю, что это проблема кеширования, но как я могу это исправить?

...