2017-08-31 5 views
0

J'essaie de tester le code js suivant:en utilisant javascript générateur babel et webpack

function* foo(x) { 
    var y = 2 * (yield (x + 1)); 
    var z = yield (y/3); 
    return (x + y + z); 
} 

const it = foo(5); 

// note: not sending anything into `next()` here 
console.log(it.next());  // { value:6, done:false } 
console.log(it.next(12)); // { value:8, done:false } 
console.log(it.next(13)); // { value:42, done:true } 

mais je reçois:

Module build failed: SyntaxError: Unexpected token

J'ai suivi ce guide link, mais je peux faire mon webpack pour construire mon code en utilisant le générateur. Voici mon webpack:

config.module.rules.push({ 
    test: /\.(js|jsx)$/, 
    exclude: /node_modules\/(?!geniuz)/, 
    use: [{ 
    loader: 'babel-loader', 
    query: { 
     cacheDirectory: true, 
     plugins: [ 
     'babel-plugin-transform-class-properties', 
     'babel-plugin-syntax-dynamic-import', 
     [ 
      'babel-plugin-transform-runtime', 
      { 
      helpers: true, 
      polyfill: false, // we polyfill needed features in src/normalize.js 
      regenerator: true, 
      }, 
     ], 
     [ 
      'babel-plugin-transform-object-rest-spread', 
      { 
      useBuiltIns: true // we polyfill Object.assign in src/normalize.js 
      }, 
     ], 
     ['transform-regenerator'], 
     ], 
     presets: [ 
     'babel-preset-react', 
     ['babel-preset-env', { 
      modules: false, 
      targets: { 
      ie9: true, 
      }, 
      uglify: true, 
     }], 
     ] 
    }, 
    }], 
}) 

J'ai aussi essayé:

['transform-regenerator', { 
      generators: true, 
     }], 
+1

Si vous essayez de ne pas enlaidir, l'erreur ne disparaissent. Si oui .. Uglify se bat avec du javascript moderne. 2: options .. Une compiler jusqu'à es5/uglify, .. ou essayer d'utiliser le propre uglifyier de babel. Babili. – Keith

+0

Il devrait y avoir plus d'informations sur cette erreur. Par exemple quelle ligne. Votre code et votre config ont l'air ok. –

+0

@Keith ne fonctionne pour moi – Jean

Répondre

0

Cela fonctionne pour moi:

module: { 
     rules: [ 
      {  
      test:/\.js$/,  
      exclude: path.resolve(__dirname,'node_modules'), 
      loader: 'babel-loader', 
      query: {presets: ['es2015']} 
      } 
     ]   
    } 
+0

Super mais ce n'est pas une réponse :) Que pensez-vous était faux avec OP config? –

+0

selon docs définition initiale des générateurs à partir de ecmascript2015, je ne vois pas ce présent dans la config ci-dessus, peut être cette cause de la question, quand je spécifie es2015 prédéfini dans mon application générateurs commence à travailler c'est tout ce que je sais :) –

+0

OP utilise 'preset-env' donc sa config devrait fonctionner. –