美文网首页
React 在jsx文件中使用箭头函数报错

React 在jsx文件中使用箭头函数报错

作者: 鱼左三水 | 来源:发表于2018-06-07 14:35 被阅读0次

    项目环境配置

    npm(v5.5+),node(v8.9.3),webpack(v3.10.0)

    问题描述

    使用webpack打包编译react项目,默认安装配置了babel-loader, babel-core, babel-preset-env等babel核心库。但在jsx文件中使用extends Component方式创建的react组件里编写静态方法时使用箭头函数报错。

    错误格式如下:

    ERROR in ./app/components/modules/exampleComp.jsx
    
    Module build failed: SyntaxError: 文件路径: Unexpected token (16:10)
    

    问题分析

    我们知道要在项目开发过程中使用es6等高级语法,需要用到babel。对于webpack来说,可在loader里面配置babel-loader。由于babel-preset配置选项较多,我们一般可以在根目录下建立.babelrc文件,专门用来放置babel preset配置,它是一个json文件。形如:

    //.bablerc文件
    {
        "presets": [
          "react", "es2015", 
            ['env',{
                "targets": {
                    "browsers": ['> 1%', 'last 2 versions']
                }
            }]
        ]
    }
    
    //原webpack.config.js文件
    module: {
        rules: [
            {
                test: /\.js$/,
                use: {
                    loader: 'babel-loader'
                },
                exclude: '/node_modules/'
            }
        ]
    }
    

    简要来看,‘react’版块用于编译jsx文件,'es2015'用于预先加载es6语法的模块,'env'告诉babel只编译批准的内容。

    项目中js文件的箭头函数是没有问题的,只在jsx文件中使用箭头函数会编译报错。

    问题解决

    基于上述分析,猜想还缺少编译jsx中es6语法的版块。参见阮老师的babel教程,选取内容如下:

    # ES2015转码规则
    $ npm install --save-dev babel-preset-es2015
    
    # react转码规则
    $ npm install --save-dev babel-preset-react
    
    # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
    $ npm install --save-dev babel-preset-stage-0
    $ npm install --save-dev babel-preset-stage-1
    $ npm install --save-dev babel-preset-stage-2
    $ npm install --save-dev babel-preset-stage-3
    

    安装ES7的转码规则npm install -D babel-preset-stage-0,并在.babelrc里更改配置:

    //省略其他代码
    "presets": ["react", "es2015", "env","stage-1"],
    

    重新编译打包文件,问题解决。
    以上。

    相关文章

      网友评论

          本文标题:React 在jsx文件中使用箭头函数报错

          本文链接:https://www.haomeiwen.com/subject/vkawsftx.html