使用默认配置,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
函数转换为生成器,无论如何。
最佳答案
我认为 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/