2015-09-01 6 views
0

При запуске моего сервера через WebPack Dev сервера, я получаю эту ошибку:Webpack-DEV-сервер, перевождь, изоморфной реакции маршрутизатор инвариантно ошибка

Uncaught Error: Invariant Violation: Server-side <Router>s need location, 
branch, params, and components props. Try using Router.run to get all the 
props you need 

Мой файл запись клиента выглядит следующим образом:

// ... imports ... 
let initialState = window.__INITIAL_STATE__; 

Object.keys(initialState) 
     .forEach(key => { 
     initialState[key] = fromJS(initialState[key]); 
     }); 
const reducer = combineReducers(reducers); 
const store = createStore(reducer, initialState); 
React.render(
    <Provider store={store}> 
    {() => 
     <Router children={routes} history={history} /> 
    } 
    </Provider>, 
    document.getElementById('react-view') 
); 

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

Версии Я использую являются:

├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
└── [email protected] 

ответ

1

Вам все еще нужно позвонить Router.run на стороне клиента для обработки навигации после того, как сервер обеспечивает первую страницу. Он будет использовать Router.HistoryLocation и все еще выполнить метод React.render для согласованного маршрута. Попробуйте позвонить React.render внутри Router.run, а не наоборот.

+0

Я установил это как принятый ответ, потому что это привело меня к правильному решению. Спасибо! Фактическое решение было то, что история, которую я импортирую и отправляю, была неправильной. Мне нужно было захватить 'BrowserHistory' из' response-router/lib/BrowserHistory' (которого вы бы не знали с информацией, которую я вам дал!) –

+0

Удивительный! Я рад, что ты заработал! –