babel watch SyntaxError:意外的令牌

时间:2015-11-11 09:11:26

标签: javascript babeljs react-jsx

当我使用babel观看jsx文件时。但是存在语法错误。

在此之前,我使用react-tools观看,一切都很好。

SyntaxError: assets/js/chat/chat.jsx: Unexpected token (258:16)
  256 |         if (this.props.isOpen) {
  257 |             return (
> 258 |                 <div className="modal-overlay">
      |                 ^
  259 |                     <ReactCSSTransitionGroup transitionName={this.props.transitionName}>
  260 |                         <div className="chat-modal">
  261 |                             {this.props.children}

以下是我的代码。

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var Modal = React.createClass({
    render: function() {
        if (this.props.isOpen) {
            return (
                <div className="modal-overlay">
                    <ReactCSSTransitionGroup transitionName={this.props.transitionName}>
                        <div className="chat-modal">
                            {this.props.children}
                        </div>
                    </ReactCSSTransitionGroup>
                </div>
            )
        } else {
            return <div className="modal-overlay"><ReactCSSTransitionGroup transitionName={this.props.transitionName}/></div>
        }
    }
});

3 个答案:

答案 0 :(得分:4)

命令:

babel --watch assets/js/ --out-dir dist/js/ --presets react

或package.json:

{
    "name": "myweb",
    "version": "1.0.0",
    "babel": {
        "presets": ["react"]
    }
}

答案 1 :(得分:3)

前几天我遇到了类似的问题。看来babel现在需要一些额外的插件来处理反应。

请参阅此SO问题的答案:babel-loader jsx SyntaxError: Unexpected token

答案 2 :(得分:1)

你有哪个版本的babel?如果升级到6,则必须添加反应预设...

{
    test: /\.js$/,
    exclude: /node_modules/,
    loader: "babel",
    query:
    {
      presets:['react', 'es2015', 'stage-0']
    }
  }