使用Babel传输默认函数参数

时间:2017-04-29 15:59:03

标签: reactjs webpack babel

我正在使用stage-0 Babel预设,以便像myMethod = () => { /* code here */ }这样的表达式使用类方法。由于我开始在stage-0预设中使用此功能,我的项目在iOS < 10停止工作,因为输出代码包含默认函数参数function myFunc(a, b = 0) { /*code here*/ }

有没有办法配置Babel将我的代码传输到较低的标准?

我的webpack babel loader config:

presets: ["es2015", "stage-0", "react"]

P上。 S.在我开始使用stage-0之前一切正常,babel loader配置与stage-0相同。

UPD:

特别是对于Sulthan,生成错误的代码

Component.prototype.has = function(key, opts, includeDefault = false) {
    var i18n = this.props.i18n;
    // Forth argument is the locale that should be used  
    // We can't use the active one because of the SSR and shared I18n state   
    // Also, we need to observe i18n.locale to detect changes, so this is useful    
    return I18n.has(key, opts, includeDefault, i18n.locale);  
};

错误是:

SyntaxError: 
    Unexpected token '='. 
    Expected a ')' or a ',' after a parameter declaration. /bundle.js:950

我再说一遍,Babel生成的这部分代码是传输代码的结果,显然是i18n库。

1 个答案:

答案 0 :(得分:0)

好的,伙计们,问题是我的node_modules之一是和谐的,我的Babel配置排除了整个node_modules目录。

loader: 'babel-loader',
exclude: /node_modules/,
query: {
  presets: ["es2015", "stage-0", "react"],
  plugins: ["transform-class-properties"]
}

我从配置中删除了exclude: /node_modules/,,现在它完美无缺!