Неожиданный токен при попытке визуализации JSX в узле - PullRequest
0 голосов
/ 22 декабря 2018

Я пробую серверный рендеринг с помощью React и React Router.Я настроил babel для корректного вывода jsx на стороне клиента, но сервер доставляет мне проблемы.Кажется, он не распознает мой JSX, независимо от того, что я делаю.

Мой серверный код выглядит следующим образом:

require("@babel/register")({
presets: ["@babel/preset-react", "@babel/preset-env"]
});

const React = require("react");
const StaticRouter = require("react-router-dom/StaticRouter");
const ReactDOMServer = require("react-dom/server");

app.get("/*", (req, res) => {
 const context = {};
 const app = ReactDOMServer.renderToString(
   <StaticRouter location={req.url} context={context}>
     <App />
   </StaticRouter>
 );
})

Я настроил babel в моем package.json как:

  "babel": {
    "presets": [
      "@babel/preset-react",
      "@babel/preset-env"
    ]
  }

И перечислим все зависимости.Ошибка выглядит следующим образом:

 <StaticRouter location={req.url} context={context}>
^

SyntaxError: Unexpected token <

1 Ответ

0 голосов
/ 22 декабря 2018

Babel не может перенести тот же модуль, где он был зарегистрирован.

В случае, если Babel используется программно как require("@babel/register"), должна быть точка входа, которая содержит код, совместимый с текущей версией Node, и другиемодули, которые будут обрабатываться Babel.

main.js

require("@babel/register")({
  presets: ["@babel/preset-react", "@babel/preset-env"]
});

require('./app');

app.jsx

const React = require("react");
...
...