使用与巴贝尔的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,
}],
这个工作对我来说:
module: {
rules: [
{
test:/\.js$/,
exclude: path.resolve(__dirname,'node_modules'),
loader: 'babel-loader',
query: {presets: ['es2015']}
}
]
}
太好了,但这不是答案:)你认为OPs配置有问题吗? –
根据文档从ecmascript2015开始的生成器的初始定义,我没有看到这个在上面的配置中存在,可能是这个问题的原因,当我指定预设es2015在我的应用程序生成器开始工作这是我所知道:) –
OP使用'preset-env',所以他的配置应该工作。 –
如果您尽量不要丑化,没有错误消失。如果是的话...... Uglify用一些现代的javascript来挣扎。 2:选项..一个编译到es5/uglify,..或尝试使用babel自己的uglifyier。巴比利。 – Keith
应该有关于这个错误的更多信息。例如哪条线。你的代码和配置看起来不错。 –
@Keith没有工作对我来说 – Jean