javascript - ReactRouter.match has no callback arguments when attempting to server-render react elements -


i've tried following this guide , this question, getting undefined callback arguments when reactrouter.match fired.

this server:

var app = new (require('express'))() var port = 3000  var reactdomserver = require('react-dom/server'); var reactrouter = require('react-router'); var routes = require('./es6/routes.js');  app.use(function(req, res) {     console.log(req.url);     reactrouter.match({ routes: routes, location: req.url }, function(error, redirectlocation, renderprops) {         console.log('error', error); // undefined         console.log('erredirectlocationror', redirectlocation); // undefined         console.log('renderprops', renderprops); // undefined     }); })  app.listen(port, function(error) {   if (error) {     console.error(error)   } else {     console.info("==> listening on port %s. open http://localhost:%s/ in browser.", port, port)   } }) 

like comments show, error, redirectlocation, , renderprops log undefined.

logging routes variable kicks off:

{ default:     { '$$typeof': symbol(react.element),      type:        { [function]         displayname: 'route',         createroutefromreactelement: [function: createroutefromreactelement],         proptypes: [object] },      key: null,      ref: null,      props: { path: '/', component: [function: app], children: [object] },      _owner: null,      _store: {} } } 

it starts typescript file, routes.tsx:

import * react 'react' import { route } 'react-router' import app './containers/app'; import home './containers/home';  export default (     <route path='/' component={app}>         <route path='/home' component={home} />     </route> ) 

which compiles es6/routes.js

"use strict"; const react = require('react'); const react_router_1 = require('react-router'); const app_1 = require('./containers/app'); const home_1 = require('./containers/home'); object.defineproperty(exports, "__esmodule", { value: true }); exports.default = (react.createelement(react_router_1.route, {path: '/', component: app_1.default}, react.createelement(react_router_1.route, {path: '/home', component: home_1.default}))); //# sourcemappingurl=routes.js.map 

what missing?

you getting undefined values because nothing matching, it's 404ing.

the reason nothing matching because mixing es5 , es6 modules. try passing routes.default match().