2015-10-11 2 views
1

Текущая ситуация:Коа ж/клиентской стороне маршрутизатора

интерфейс: Реагировать & React-маршрутизатор

бэкенд: Коа

app.use(mount('/graphql', graphqlHTTP({ schema: schema }))); 
app.use(mount('/api', api)); 
app.use(serve(__dirname + '../../public')); //serves static index.html 

Когда я нажимаю на React Ссылка маршрутизатора <> в браузере, все веб-страницы показывают. Всякий раз, когда я обновляю страницу или вручную вводим ссылку. Я получаю страницу «не найден». Между прочим, здесь нет поддержки на стороне сервера. Как разрешить React-Router обрабатывать маршруты, не указанные выше, т. Е. Только на клиенте?

ответ

1

раствор (на основе вышеприведенного ответа)

import router from 'koa-router'; 
import sendfile from 'koa-sendfile'; 
//code to initialize router 
//... 

router.get('*', function*() { 
    let stats = yield* sendfile.call(this, pathToIndexHtml)); 

    if (!this.status) this.throw(404) 
}) 

Коа теперь служит index.html на каждом маршруте, который не указан. :)

+0

Что такое корень sendfile? Это относительно того, где находится server.js? –

3

Сервер должен ответить что-то, когда страница обновлена; в этом случае ему необходимо ответить index.html, чтобы клиентское приложение могло загрузиться, а затем React Router может смонтировать правильный компонент на основе URL-адреса.

Итак, на стороне сервера, вам нужно сообщить Коа, чтобы он служил index.html для каждый URL-адрес, который еще не соответствует ни одному из других маршрутов.

+1

вот пример того, что @BinaryMuse сказал http://stackoverflow.com/questions/33062215/why-am-i-not-able-to-route-my-app-react-react-router- redux-router/33062323 # 33062323 – knowbody

+1

Это хороший пример для сервера Express; Я бы опубликовал его для Koa, но я не очень хорошо знаком с ним. :) –

+0

Спасибо, я работаю; Я перевел экспресс-пример на koa. – Seneca

Смежные вопросы