如何在命令行中转换JSX文件

时间:2015-11-25 00:36:23

标签: reactjs babeljs react-jsx

我是React的新手,我试图关注pretranspile JSX的主题:

enter image description here

我的代码[app.js]非常简单:

var React = require("react");
var ReactDOM = require("react-dom");
var Todo = React.createClass({
    render: function() {
        return <button>Add</button>;
    }
});
ReactDOM.render(<Todo />, docuemtn.getElementById("div1"))

我先安装:

npm install -g babel-cli
npm install react react-dom

然后尝试使用:

babel --watch ./app.js --out-dir ./

但它总是说:

SyntaxError: ./app.jsx: Unexpected token (10:9)
   8 | var Todo = React.createClass({
   9 |  render: function() {
> 10 |          return <div>Hello {this.props.name}</div>;
     |          ^
  11 |  }
  12 | });
  13 |

我想知道如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

Babel 6及更新不再具有React的任何原生变换。你必须添加这样的预设

npm install babel-preset-react

然后运行

babel --presets react --watch ./main.js --out-dir ./

别忘了--presets react部分。之后它应该可以正常工作。

答案 1 :(得分:0)

  1. 将babel与插件一起安装以转换react-jsx

    npm install --save-dev babel-cli babel-preset-env babel-plugin-transform-react-jsx
    
  2. 运行以下命令编译jsx文件

    ./node_modules/babel-cli/bin/babel.js --plugins transform-react-jsx test.jsx