javascript - 如何使用 webpack 将 await 关键字转换为 es5?

标签 javascript webpack

我这辈子都想不出如何将使用 await 的代码转换为有效的 es5。我正在使用 webpack 3 并且可以成功地将 async 函数转换为返回 promises 的函数,但是它在 await 上出错:Module build failed: SyntaxError: ...: await 是保留字。我假设我需要一个特定的 babel-loader 插件,但我没有看到一个用于 await 的插件。这是我的 webpack 配置的相关部分:

     module: {   
        rules: [{
          test: /\.js$/,
          exclude: /(node_modules|bower_components)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['es2015', 'stage-0'],
              plugins: ["syntax-async-functions","transform-regenerator"],
            }
          }
        }
      ]
    }

我想做的事情可行吗?

更新:

现在这是我的 webpack 配置的相关部分:

    module: {
        rules: [
        {
          test: /\.js$/,
          exclude: /(node_modules|bower_components)/,
          use: [{
            loader: 'nodent-loader',
            options: {
              promises: true,
              wrapAwait: true
            }
           },
           {
            loader: 'babel-loader',
            options: {
              presets: ['es2015', 'stage-0'],
              plugins: ["syntax-async-functions","transform-regenerator"],
            }
           }
          ]
        }
      ]
    }

这是我要编译的代码:

module.exports = async function() {
    var x = await wait()
}

async function wait() {
    return new Promise(function(resolve) {
        setTimeout(function() {
            resolve()
        },1000)
    })
}

最佳答案

您实际上在错误的函数上声明了 async

您的wait 函数不是异步的。您调用它,它会立即返回 promise 。

您需要将async 添加到this.init,这是一个异步函数。它不会立即返回,因为它需要 await promise 来解决。

引用文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

关于javascript - 如何使用 webpack 将 await 关键字转换为 es5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46970787/

相关文章:

c# - ASP :button with no post back or refreshing the page

gitlab wiki页面中的Javascript/html?

javascript - 存在 jQuery 字符串比较问题

javascript - 从 gulp 切换到 webpack 来处理 SCSS 文件,需要帮助设置

javascript - 文件更改时 Webpack 开发服务器不会重新编译

javascript - 使用 let 初始化的函数在使用 this 访问时不会被替换

javascript - 有没有一种简单的方法使用javascript替换来删除标签内的内容

css - Webpack:如何在css sourcemap中获取相对路径

javascript - NPM 模块导致 Web 应用程序无法在 IE11 上呈现

node.js - bcrypt,续集错误在 ../node_modules/node-pre-gyp/lib/publish.js 找不到模块 : Error: Can't resolve 'aws-sdk'