React Serverside呈现意外的令牌,JSX和Babel

pk1*_*k1m 9 reactjs react-jsx react-router babeljs

我很难找到使用babel的正确方法,允许我在服务器端使用jsx.

对于babel,Node-jsx已被弃用.似乎babel-core/register应该使用什么,但我仍然得到意想不到的令牌问题.

我创建了一个具有问题的回购.

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

当我运行node appnpm run watch-js我不断获得引用JSX代码'<'的意外令牌时.

我如何让babel转向JSX,或者我完全离开了,谢谢.

Dom*_*nic 22

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

require('babel-register')({
    stage: 0
});
Run Code Online (Sandbox Code Playgroud)

如果您没有使用实验性的babel功能,则可以省略第0阶段.您也可以选择放入这些选项.babelrc.

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

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

对于babel 6x:

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

require('babel-register')({
    presets: ['es2015', 'react']
});
Run Code Online (Sandbox Code Playgroud)

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

为了观察你在package.json中写的内容,你可以尝试一个CLI命令,就像facebook在这里的注释中建议的那样(或者使用webpack):

babel --presets react es2015 --watch app/ --out-dir build/
Run Code Online (Sandbox Code Playgroud)