async-await - 将 next.js 配置为使用 Babel 不转换异步函数

标签 async-await electron babeljs next.js

使用默认配置,Next 指示 Babel 在客户端为我的异步函数使用生成器。这使调试看起来更具有挑战性。如何禁用此行为?

我正在使用 Electron 应用程序,所以我真的希望进行最少的转换以匹配 Chromium 运行时。

这是我的 package.json 中当前的 “babel” 关键内容:

  "babel": {
    "presets": [
      [
        "next/babel",
        {
          "preset-env": {
            "targets": {
              "chromium": 73,
              "node": 11
            }
          },
          "transform-runtime": {
            "regenerator": false
          }
        }
      ]
    ]
  }

这里的结果是没有包含 regenerator,但它在 Webpack 生成的代码中崩溃了。如果我取消禁用 regenerator,我可以看到 Assets 仍在将 async 函数转换为生成器,无论如何。

enter image description here

最佳答案

我认为 chromium 不是 browsers list 的有效目标文档。尝试将 "chrome": "73" 作为目标。请注意,给定目标的值应该是字符串类型,而不是数字。

如果有一个你不想包含的插件,那么 exclude 键应该让你 blacklist a plugin否则将根据您提供的目标环境使用。 "exclude": ["@babel/plugin-transform-regenerator"].

提问者的笔记

这解决了我的问题。我达到了预期的结果:

{
  "presets": [
    [
      "next/babel",
      {
        "preset-env": {
          "targets": {
            "chrome": "73",
            "node": "11"
          }
        }
      }
    ]
  ]
}

关于async-await - 将 next.js 配置为使用 Babel 不转换异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55473659/

相关文章:

reactjs - Babel 5 插件正在使用不受支持的 Babel 版本运行

javascript - babel-preset-react-native 和高阶组件

javascript - 无法从/projectFolder 中找到模块 'react-native-reanimated/plugin'

c# - async/await 和 IDisposable 接口(interface)

c# - 如果我的接口(interface)必须返回 Task 什么是无操作实现的最佳方法?

angular - 部署/运行: local Express web-server and local client-side angular app that sends ajax requests to this local web-server

javascript - 在 Rollup 构建的 Electron 应用程序中导入 Ramda 会导致错误

javascript - 使用 Web 音频工作集录制音频时出现咔嗒声

javascript - 为什么在 JavaScript 函数体内调用 await 需要异步?

javascript - 如何在另一个函数中使用异步函数?