Webpack无法识别ES6传播语法

时间:2016-11-21 12:16:21

标签: reactjs webpack babeljs

尝试测试ES6 Spread语法,但是webpack给我一个错误。

的package.json

"devDependencies": {
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.8",
    "babel-preset-latest": "^6.16.0",
    "babel-preset-react": "^6.16.0",
    "webpack": "^1.12.13"
}

webpack.config.js

loaders: [
            {
                loader: 'babel-loader', 
                query: {
                    presets: ['react', 'latest']
                },
                test: /\.jsx?$/,
                exclude: /(node_modules|bower_components)/
            }
         ]

app.jsx(webpack条目文件)

var objOne = {name: 'Jussi', location: 'Interwebs'};
var objTwo = {
    age: 28, 
    ...objOne
};

控制台

webpack
Hash: 2a82a67f90f9aa05ab4a
Version: webpack 1.12.13
Time: 1409ms
    + 1 hidden modules

ERROR in ./app/app.jsx
Module build failed: SyntaxError: Unexpected token (7:1)

   5 | var objTwo = {
   6 |  age: 28, 
>  7 |  ...objOne
     |  ^

这个省略号表示法应该有效,对吗?我在哪里错了?

1 个答案:

答案 0 :(得分:4)

这不是有效的ES2015(或ES2016)代码:

var objOne = {name: 'Jussi', location: 'Interwebs'};
var objTwo = {
    age: 28, 
    ...objOne
};

它依赖于object spread properties,这是第3阶段提案(截至2016年11月撰写)。 (数组传播是ES2015的一部分,但不是对象传播。)这意味着该功能已完全定义并充分展现,规范文本已准备就绪,但它正在等待实现和实现反馈。 (the process document中的详细信息。)所以它很快就可以很快进入规范(可能不是ES2017,尽管它可能仍然可能取决于实现的程度,但几乎可以肯定ES2018)。

Babel和其他类似的转发器将使用相关选项集进行转换(例如,对于Babel而言,它是stage-3 preset; example)。