2016-11-21 3 views
0

Der Versuch, die ES6-Spreadsyntax zu testen, aber Webpack gibt mir einen Fehler.Das Webpack erkennt die ES6-Streusyntax nicht.

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 Eintragsdatei)

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

Konsole

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

Diese Ellipse Notation sollte funktionieren, oder? Wo gehe ich hier falsch?

+2

Objektverteilung ist nicht Teil der ES2015-Spezifikation. – sdgluck

Antwort

3

Dies gilt nicht ES2015 (oder ES2016) Code:

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

Es stützt sich auf object spread properties, die eine Stufe 3 Vorschlag sind (zum Zeitpunkt des Schreibens im November 2016). (Array Verbreitung ist Teil von ES2015, aber nicht Objekt Verbreitung.) Das bedeutet, dass das Feature vollständig definiert und gut ausgearbeitet ist, und Spezifikationstext ist bereit, aber dass es auf Implementierungen und Implementierungsfeedback wartet. (Details in the process document.) Also ist es wirklich weit und wahrscheinlich bald in eine Spezifikation (vielleicht nicht ES2017, obwohl es immer noch möglich sein kann, abhängig davon, wie weit Implementierungen sind, aber fast sicher ES2018).

Babel und andere ähnliche transpilers werden es mit dem relevanten Optionssatz transpilieren (zum Beispiel, für Babel ist es das stage-3 preset; example).

+0

Danke Jungs, das macht es klar. :-) – mylvinta

+0

@ T.J. wie reagiere dann die Requisiten? – abhirathore2006

+0

@ abhirathore2006: Die meisten Leute, die React verwenden, verwenden einen Transpiler, der die Eigenschaften der Objektverteilung (und JSX) versteht. –

Verwandte Themen