我应该如何在reactjs express中实现检测移动设备?我使用 mobile-detect确定是否移动但首先我使用const md = new MobileDetect(window.navigator.userAgent)实现它,但我记得窗口在加载服务器时不存在.快递
          UPDATE
// app.js
...
import { routes } from './routes';
import { match, RouterContext } from 'react-router';
import { renderToString } from 'react-dom/server';
...
const app = express();
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.get('*', (req, res) => {
  // routes is our object of React routes defined above
  match({ routes, location: req.url }, (err, redirectLocation, props) => {
  if (err) { // something went badly wrong, so 500 with a message
    res.status(500).send(err.message);
  } else if (redirectLocation) { // we matched a ReactRouter redirect, so redirect from the server
    res.redirect(302, redirectLocation.pathname + redirectLocation.search);
  } else if (props) { // if we got props, that means we found a valid component to render for the given route
    const reducer = combineReducers(reducers);
    const store = applyMiddleware(...middlewares)(createStore)(reducer);
  ...
const server = http.createServer(app);
const port = process.env.PORT || 3003;
server.listen(port);
server.on('listening', () => {
  console.log('Listening on ' + port);
});
// client-render.js
import { routes } from './routes';
import { Router, browserHistory } from 'react-router'
ReactDOM.render(
  <Provider store={store}>
    <Router onUpdate={() => {scrollTop(); handleNotifs(store)}} routes={routes} history={browserHistory} />
  </Provider>,
  document.getElementById('app')
);
// routes.js
import AppComponent from './components/app';
import IndexComponent from './components/index';
...
const routes = {
  path: '',
  component: AppComponent,
  childRoutes: [{
    path: '/',
    component: IndexComponent,
    name: 'home'
  }, {...}]
}
 通过使我的路由模块成为一个接受用户代理的功能,我完成了你所要求的.然后它只返回一个数组或嵌套的路由.这是一个例子…… 
  
 routes.js
module.exports = (userAgent) => {
  const md = new MobileDetect(userAgent)
  if (md) { // not sure on the syntax of MobileDetect?
    return {
      // return mobile routes
    }
  } else {
    return {
      // return desktop routes
    }
  }
} 
 app.js
app.get('*', (req, res) => {
  match({ routes: routes(req.headers['user-agent']), location: req.url }, (err, redirectLocation, props) => {
    // continue as normal
  }
} 
 客户render.js
ReactDOM.render(
  <Provider store={store}>
    <Router onUpdate={() => {scrollTop(); handleNotifs(store)}} history={browserHistory}>
      {routes(navigator.userAgent)}
    </Router>
  </Provider>,
  document.getElementById('app')
); 
 另外,使用这种方法我们也可以将auth cookie传递给路由,这样如果路由落后于登录,onEnter方法可以重定向.
希望这可以帮助! BTW React-Router是最好的!!我得到了纽约的创作者,他们是一流的.
