与babel一起使用async / await时,没有定义regeneratorRuntime错误

时间:2017-10-30 21:52:54

标签: javascript

我正在使用异步/等待代码而且我正在接收" regeneratorRuntime未定义错误"。我已经尝试了堆栈溢出的几个解决方案,但是我无法让它们中的任何一个工作。这是我的配置:

webpack.config.js:

module.exports = {    
    entry: ['babel-polyfill', './client/libs/compileTemplate/entry.jsx', './client/libs/compileTemplate/loginEntry.jsx'],
    output: {
        path: '/dist',
        publicPath: '/assets',
        filename: '[name].js'
    },
    plugins: plugins,
    externals: {},
    module: {
        loaders: require('./webpack.config.loaders')
    },

...

webpack.config.loaders.js:

module.exports = [
  {
    test: /\.jsx$/,
    loader: 'babel',
    query: {
      presets: ['es2015', 'stage-0', 'react'],
    }
  },
];

的package.json:     " devDependencies":{         " babel-core":" ^ 6.7.5",         " babel-loader":" ^ 6.2.4",         " babel-polyfill":" ^ 6.26.0",         " babel-preset-es2015":" 6.16.0",         " babel-preset-react":" 6.16.0",         " babel-preset-stage-0":" ^ 6.24.1",         " json-loader":" ^ 0.5.4",         " less-loader":" 2.2.3"       }

我还需要(" babel-core / register")在我的entry.jsx文件的顶部。

请让我知道我哪里出错了。

2 个答案:

答案 0 :(得分:4)

好的,有几件事解决了我的问题。

1)npm i -S babel-preset-env babel-polyfill和我的webpack.config.js我添加了'env',它一举照顾es2015,es2016和es2017:

module: {
    loaders: [
       { test: /\.jsx$/, loader: 'babel-loader', query: { presets: ['env', 'react'] } },
    ]
},


entry: [ './client/libs/compileTemplate/entry.jsx', './client/libs/compileTemplate/loginEntry.jsx'],

2)在我的entry.jsx中我有:

async function createSessionInfo() { // stuff here };

在webpack中悬挂在我的require('babel-polyfill')语句之上,因此我将其更改为:

require('babel-polyfill');
const createSessionInfo = async function() {

瞧,问题一去不复返了。哦,并确保你拥有最新的babel-core和babel-loader。

答案 1 :(得分:1)

Async / await不是es2015预设的一部分,您应该使用es2017或使用transform-async-to-generator和es2015