Страница шаблона Render React JSX: неожиданная ошибка <токен - PullRequest
0 голосов
/ 23 января 2019

Я использую React для своего основного приложения, которое запускается после входа пользователя в систему. Перед входом пользователя у меня есть несколько страниц (вход, регистрация, ошибка, сброс пароля), которые находятся за пределами основного приложения.Для основного приложения я установил для движка вида:

app.engine('jsx', require('express-react-views').createEngine());

Итак, теперь установлен движок jsx.Прямо сейчас я хочу иметь несколько шаблонов для имеющихся у меня страниц (вход в систему, ошибки и т. Д.) И хочу добавить им значения.Я пытался использовать jsx, но почему-то это не работает, и я не знаю почему.Например, вот мое error.jsx:

/** @jsx React.DOM */

var React = require('react');

class ErrorPage extends React.Component {
  render() {
    return (
      <html>
        <head>
          <title>Error</title>
        </head>
        <div>
          {this.props.error_message}
        </div>
      </html>
    );
  }
}

module.exports = ErrorPage;

Я хочу добавить его с помощью error_message, например:

app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  //res.locals.message = err.message;
  //res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  var path = __dirname + '/public/error.jsx';
  //res.sendFile(path);
  res.render(path, {
    error_message: err.message 
  });
});

Сейчас это не работает, давая мне

SyntaxError: неожиданный токен <</p>

Как можно использовать jsx для отправки отдельных шаблонов или использовать другой шаблон представления рядом?Я пытался использовать handlebars, но я не уверен, как заставить несколько движков просмотра работать одновременно.Было бы лучше, хотя бы просто приспособить jsx для этой цели.Мое основное приложение React работает, потому что я присоединяю его к корневому элементу DOM и использую webpack configs, но здесь я не могу этого сделать: я хочу отправить шаблон и просто вставить туда несколько параметров.

...