反应jsx和babel的意外令牌

时间:2015-11-17 04:38:01

标签: reactjs browserify babeljs

我试图开始反应。我安装了npm,browserify,babel及其预设。 Babel无法转换JSX代码。任何人都可以帮助我了解正在发生的事情。我使用正确的babel预设吗?我的demo.js

"use strict";

var React = require('react');
var ReactDOM = require('react-dom');

var Test = React.createClass({
    render: function(){
        var {a, b, ...other} = this.props;
        return(
            <div>Hi</div>
        );
    }
});

这是我运行创建包的命令。

sudo browserify -t [ babelify --presets [ es2015 react ] ] src/demo.js -o ./bundle/app.js

以下是我得到的错误

SyntaxError: /Users/shashank/git_views/srh_labs/webui/src/demo.js: Unexpected token (8:13)
   6 | var Test = React.createClass({
   7 |  render: function(){
>  8 |      var {a, b, ...other} = this.props;
     |              ^
   9 |      return(
  10 |          <div>Hi</div>
  11 |      );
    at Parser.pp.raise (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/location.js:24:13)
    at Parser.pp.unexpected (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/util.js:91:8)
    at Parser.pp.parseIdentifier (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/expression.js:999:10)
    at Parser.pp.parsePropertyName (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/expression.js:821:135)
    at Parser.pp.parseObj (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/expression.js:737:12)
    at Parser.pp.parseBindingAtom (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/lval.js:163:19)
    at Parser.pp.parseVarHead (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/statement.js:591:18)
    at Parser.<anonymous> (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/plugins/flow.js:953:13)
    at Parser.parseVarHead (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/plugins/flow.js:953:13)
    at Parser.pp.parseVar (/Users/shashank/git_views/srh_labs/webui/node_modules/babylon/lib/parser/statement.js:574:10)
$ sudo browserify -t [ babelify --presets [ es2015 react ] ] src/demo.js -o ../server/rest/src/main/webapp/uiserver/bundle/app.js 

2 个答案:

答案 0 :(得分:4)

对象rest / spread运算符(在第8行使用)不是es2015包的一部分。您必须安装transform-object-rest-spread插件才能对其进行转换。

答案 1 :(得分:1)

尝试创建.babelrc文件并将其放入:

{
  "presets": ["react"]
}