我正在爲我的React/Express應用程序設置服務器端渲染,但遇到與調用相關的語法錯誤react-dom/server
renderToString()
方法。我鬆散下面這個教程 - http://crypt.codemancers.com/posts/2016-09-16-react-server-side-rendering/React/Express - 在調用renderToString()時出現'Unexpected token <'()
index.js
(快速應用程序根目錄):
'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
沒問題@skwidbreth很高興你找到了解決方案。 –