2016-11-21 105 views
0

尝试测试ES6传播语法,但webpack给我一个错误。Webpack无法识别ES6传播语法

的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 
    |^

这个省略号符号应该可以,对不对?我在哪里错了?

+2

对象传播不是ES2015规范的一部分。 – sdgluck

回答

3

这是无效的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)。

巴别尔和其他类似的transpilers将与相关的选项集合(例如,对于Babel而言,它是stage-3 preset; example)。

+0

谢谢你们,这会清除它。 :-) – mylvinta

+0

@ T.J。那么如何反应传播的道具呢? – abhirathore2006

+0

@ abhirathore2006:大多数使用React的人使用了解对象传播属性(和JSX)的转译器。 –