我正在为我的React/Express应用程序设置服务器端渲染,但在调用react-dom/server
的renderToString()
方法时遇到语法错误。我松散地按照这个教程 - http://crypt.codemancers.com/posts/2016-09-16-react-server-side-rendering/ 进行操作。
index.js
(Express应用程序根目录):
'use strict'
require('babel-register')({
presets: ['es2015', 'react']
});
const express = require('express')
const path = require('path')
const app = express()
const React = require('react')
const reactDomServer = require('react-dom/server')
const routes = require('./src/routes.jsx')
const reactRouter = require('react-router')
let { match, RouterContext } = reactRouter
app.get('*', (req, res) => {
match({ routes: routes, location: req.url }, (err, redirect, props) => {
const appHtml = reactDomServer.renderToString(<RouterContext {...props}/>)
res.send(renderPage(appHtml))
})
})
然而,这会引起错误:
const appHtml = reactDomServer.renderToString(<RouterContext {...props}/>)
^
SyntaxError: Unexpected token <
我看到的所有类似示例都是直接将JSX组件放入... 我错过了什么吗?
babel-register
的正确行为,但是这个答案也很好,我可能会在我的实际应用中使用它。 - skwidbreth