2016-01-08 45 views
2

我想在服務器端使用react-router渲染一個簡單的模擬。React-router無法在服務器端渲染

這裏是代碼

import express from 'express' 
import React from 'react' 
import {Router} from 'react-router' 
import routes from './routes' 
import ReactDOMServer from 'react-dom/server' 
var app = express() 

app.use((req, res)=> { 
    res.send('<!DOCTYPE html>' + ReactDOMServer.renderToString(<Router routes={routes}/>)) 
}) 

app.listen('8080', function() { 
    console.log('Server started at port 8080') 
}) 

,並得到了以下錯誤

Invariant Violation: Hash history needs a DOM

我使用的是最新版本的反應路由器的。我得到它的工作的舊版本

import express from 'express' 
import React from 'react' 
import {Router} from 'react-router' 
import routes from './routes' 
import ReactDOMServer from 'react-dom/server' 
var app = express() 

app.use((req, res)=> { 
    Router.run(routes, req.path, (Handler) => { 
    res.send('<!DOCTYPE html>' + ReactDOMServer.renderToString(<Router routes={routes}/>)) 
    }) 
}) 

app.listen('8080', function() { 
    console.log('Server started at port 8080') 
}) 

回答