jsx передается в реагирующий домен / сервер renderToString - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь понять реакции-дом / сервер.

У меня есть приложение реагирования, использующее экспресс в качестве сервера.

У меня есть такой скоростной маршрут:

var server = app.listen(3000);
app.get('/test', (req, res) => {                       
  const context = {}
  const html = ReactDOMServer.renderToString(
      <h1>foo</h1>
  )  
  if (context.url) {
    res.writeHead(302, {
      Location: context.url
    })
    res.end()
  } else {
    res.write(html)
    res.end()
  }
});

Если я запускаю файл сервера с node app-server, я получаю эту ошибку:

      <h1>adasd</h1>
      ^
SyntaxError: Unexpected token <

Я передал JSX для renderToString на основе приведенного там примера: https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/StaticRouter.md

Как заставить файл экспресс-сервера обработать этот код JSX?

Для клиентской стороны я использую webpack с загрузчиком babel, и он отлично работает.

1 Ответ

0 голосов
/ 02 мая 2018

Благодаря @ azium.

Решением было сначала преобразовать файл ES6 / JSX с помощью babel-cli.

Я использовал эту команду babel-cli :

npx babel --no-babelrc script.js --out-file script-compiled.js --presets=es2015,react

npx используется для «выполнения двоичных файлов пакета npm»

...