【问题标题】:Babel unexpected token compiling react componentBabel 意外令牌编译反应组件
【发布时间】:2017-07-13 14:05:06
【问题描述】:

我正在尝试使用 babel 编译以下代码,但它在下一行的字符“=”上给了我一个“意外标记”:

状态 = {};

babel 版本为:6.24.1(babel-core 6.25.0)

代码:

import {Button, Menu} from 'semantic-ui-react';

class AppBar extends Component {
    state = {};

    handleItemClick = (e, { name }) => this.setState({ activeItem: name });

    render() {
        const { activeItem } = this.state;

        return (
            <Menu>
                <Menu.Item
                    name='dashboard'
                    active={activeItem === 'dashboard'}
                    onClick={this.handleItemClick}
                >
                    Dashboard
                </Menu.Item>

                <Menu.Item
                    name='contacts'
                    active={activeItem === 'contacts'}
                    onClick={this.handleItemClick}
                >
                    Contact Lists
                </Menu.Item>

                <Menu.Item
                    name='messages'
                    active={activeItem === 'messages'}
                    onClick={this.handleItemClick}
                >
                    Messages
                </Menu.Item>
            </Menu>
        )
    }
}

ReactDOM.render(
  <AppBar/>,
  document.getElementById('root')
);

我正在使用 es2015 和 react 预设。

有什么问题?谢谢。

【问题讨论】:

    标签: reactjs ecmascript-6 babeljs semantic-ui-react


    【解决方案1】:

    将包 babel-plugin-transform-class-properties 添加到您的项目中。

    【讨论】:

      【解决方案2】:

      我目前正在为我们的 React 应用程序使用这些 babel 模块(在 package.json 中):

      "babel-cli": "~6.24.1",
      "babel-core": "~6.25.0",
      "babel-eslint": "~7.2.3",
      "babel-loader": "~7.1.0",
      "babel-plugin-add-module-exports": "~0.2.1",
      "babel-plugin-istanbul": "^4.1.3",
      "babel-plugin-syntax-dynamic-import": "^6.18.0",
      "babel-plugin-transform-class-properties": "~6.24.1",
      "babel-preset-es2015": "~6.24.1",
      "babel-preset-react": "~6.24.1",
      "babel-preset-stage-3": "^6.24.1",
      "babel-register": "~6.24.1",
      "babel-runtime": "~6.23.0",
      

      我在根文件夹中有以下.bablerc

      {
        "presets": [
          "es2015", "react", "stage-3"
        ],
        "plugins": ["transform-class-properties", "add-module-exports","syntax-dynamic-import"],
        "env": {
          "development": {
            "plugins": ["react-hot-loader/babel"]
          },
          "coverage": {
            "plugins": ["istanbul"]
          }
        }
      }
      

      我使用相同的代码定义state

      export class AttributeModelListContainer extends React.Component {
      
        static propTypes = {
          // from router
          params: PropTypes.shape({
            project: PropTypes.string,
          }),
          // from mapStateToProps
          [...]
        }
      
        state = {
          isLoading: true,
        }
      }
      

      【讨论】:

        【解决方案3】:

        确保你已经安装了所有你需要的 babel 预设:

        yarn add babel-loader babel-core --dev
        yarn add babel-polyfill --dev
        yarn add babel-preset-es2015 --dev
        yarn add babel-preset-stage-2 --dev
        yarn add babel-preset-react --dev
        

        并且babel按这个顺序预设为.babelrc:

        {
          "presets": ["es2015", "react", "stage-2"]
        }
        

        包含第 2 阶段应该有足够的新功能,您需要进行开发。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-16
          • 2020-11-16
          • 2016-07-01
          相关资源
          最近更新 更多