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