使用与巴贝尔的WebPack的JavaScript生成

使用与巴贝尔的WebPack的JavaScript生成

问题描述:

我想测试下的js代码:使用与巴贝尔的WebPack的JavaScript生成

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 } 

,但我发现:

Module build failed: SyntaxError: Unexpected token

我遵循这个指南link但我可以让我的WebPack使用生成器构建我的代码。这是我的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, 
     }], 
     ] 
    }, 
    }], 
}) 

我也试过:

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

如果您尽量不要丑化,没有错误消失。如果是的话...... Uglify用一些现代的javascript来挣扎。 2:选项..一个编译到es5/uglify,..或尝试使用babel自己的uglifyier。巴比利。 – Keith

+0

应该有关于这个错误的更多信息。例如哪条线。你的代码和配置看起来不错。 –

+0

@Keith没有工作对我来说 – Jean

这个工作对我来说:

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

太好了,但这不是答案:)你认为OPs配置有问题吗? –

+0

根据文档从ecmascript2015开始的生成器的初始定义,我没有看到这个在上面的配置中存在,可能是这个问题的原因,当我指定预设es2015在我的应用程序生成器开始工作这是我所知道:) –

+0

OP使用'preset-env',所以他的配置应该工作。 –