Webpack-dev-server, redux, isomorphic react router invariant

Webpack-dev-server, redux, isomorphic react router invariant error

本文关键字:router invariant react isomorphic redux Webpack-dev-server      更新时间:2023-09-26

当通过webpack dev server运行我的服务器时,我得到这个错误:

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')
);

一切呈现在服务器端正确,问题是当我有这个路由器代码在客户端。似乎路由器试图像服务器大小的路由器一样运行,即使它是在客户端上运行。

我使用的版本是:

├── react@0.13.3
├── react-hot-loader@1.3.0
├── react-redux@0.8.2
├── react-router@1.0.0-beta3
├── redux@1.0.1
└── webpack-dev-server@1.10.1

在服务器交付第一页后,您仍然需要在客户端调用Router.run来处理导航。它将使用Router.HistoryLocation,并仍然对匹配的路由执行React.render方法。尝试在Router.run内部调用React.render,而不是其他方式。