【问题标题】:React Serverside rendering Unexpected token, JSX and BabelReact 服务器端渲染 Unexpected token、JSX 和 Babel
【发布时间】:2015-11-02 06:59:31
【问题描述】:

我无法找到正确的方法来使用 babel 以允许我在服务器端使用 jsx。

Node-jsx 已被 babel 弃用。似乎应该使用 babel-core/register,但我仍然遇到意外的令牌问题。

我针对我遇到的问题创建了一个 repo。

https://github.com/pk1m/Stackoverflow-helpme

当我运行 node appnpm run watch-js 时,我不断收到指向 JSX 代码“

我如何让 babel 转译 JSX,或者我完全关闭了,谢谢。

【问题讨论】:

标签: reactjs babeljs react-router react-jsx


【解决方案1】:

您需要使用babel-register (npm i babel-register --save)。并在您的服务器上运行:

require('babel-register')({
    stage: 0
});

如果您不使用实验性 babel 功能,则可以省略阶段 0。此外,您可能更愿意将这些选项放在 .babelrc 中。

请注意,它仅适用于调用之后所需的文件(因此它不会对您包含它的文件产生影响)。

您还可以在 .babelrc 文件中包含预设和其他选项。

对于 babel 6x

npm i babel-register babel-preset-es2015 babel-preset-react --save

require('babel-register')({
    presets: ['es2015', 'react']
});

注意:还有阶段 0-2 预设。

要查看您在 package.json 中所写的内容,您可以尝试使用 facebook 在注释 here 中建议的 CLI 命令(或使用 webpack):

babel --presets react es2015 --watch app/ --out-dir build/

【讨论】:

  • 好的,我回家后试试。 JSX 是实验性的 babel 功能吗?
  • @pk1m 没有 jsx 和其他 es6 功能将起作用,阶段 0 用于提议的东西,如 es7 中的 static 和其他实验性的东西(如果你使用 React.Component 而不是静态的很好React.createClass)
  • 好的,我使用了require('babel/register'),但它说它已被require('babel-core/register') 弃用。因此,如果您可以在我的 git 中看到,我会使用它。仍然为 ' 引发错误
  • 这看起来很有希望,因为我已经修改了不同的包,我只能让 es6 或 jsx 工作。从不两者兼而有之。等我回家试试看更新。谢谢!
  • 请注意,babel/register, babel-core/register 现在已弃用,取而代之的是 babel-register
猜你喜欢
  • 2017-11-29
  • 1970-01-01
  • 2017-06-30
  • 2016-12-18
  • 2016-12-15
  • 2015-11-19
  • 2016-10-12
相关资源
最近更新 更多