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

ste*_*rda 7 javascript

我正在使用async/await代码,我收到"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')
    },
Run Code Online (Sandbox Code Playgroud)

...

webpack.config.loaders.js:

module.exports = [
  {
    test: /\.jsx$/,
    loader: 'babel',
    query: {
      presets: ['es2015', 'stage-0', 'react'],
    }
  },
];
Run Code Online (Sandbox Code Playgroud)

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文件的顶部.

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

ste*_*rda 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'],
Run Code Online (Sandbox Code Playgroud)

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

async function createSessionInfo() { // stuff here };
Run Code Online (Sandbox Code Playgroud)

它被提升到了 webpack 中我的 require('babel-polyfill') 语句之上,所以我将其更改为:

require('babel-polyfill');
const createSessionInfo = async function() {
Run Code Online (Sandbox Code Playgroud)

瞧,问题消失了。哦,确保你有最新的 babel-core 和 babel-loader。