Javascript “避免进口”;再生器运行时/运行时“;

Javascript “避免进口”;再生器运行时/运行时“;,javascript,jestjs,babeljs,parceljs,Javascript,Jestjs,Babeljs,Parceljs,我正在使用Parcel捆绑我的项目,并使用jest运行我的测试 一切正常,但在使用async/await关键字的测试中,我必须导入registrator runtime/runtime 像这样: 导入“再生器运行时/运行时” 测试(“读取铠装密钥”,异步()=>{ }) 还有这项工作 但如果没有此导入(import“registrator runtime/runtime”),我会收到以下错误消息: ReferenceError: regeneratorRuntime is not define

我正在使用Parcel捆绑我的项目,并使用jest运行我的测试

一切正常,但在使用
async/await
关键字的测试中,我必须导入
registrator runtime/runtime

像这样:

导入“再生器运行时/运行时” 测试(“读取铠装密钥”,异步()=>{ }) 还有这项工作

但如果没有此导入(
import“registrator runtime/runtime”
),我会收到以下错误消息:

ReferenceError: regeneratorRuntime is not defined
如何将项目更改为在使用async的测试上运行而不导入


示例:

据我所知,您可以将
@babel/preset env
配置为针对当前节点版本进行编译,该版本如下所述:

.babelrc

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}

根据其版本,并非浏览器运行时中可用的所有功能都能在节点运行时中工作。当前版本的node支持承诺(带有
await/async
),但由于您使用的是默认使用Babel的Parcel,因此
async/await
调用将被编译为使用
再生器运行时
,这是该功能的多填充。您可以
在中导入“再生器运行时/运行时”
(如果您不需要polyfill,则不建议这样做!),也可以告诉babel您的运行时是什么

您应该能够让它与预设一起工作,就像在
中配置的那样。babelrc

{
“预设”:[
[
“@babel/preset env”,
{
“目标”:{
“节点”:“10”//目标节点版本,布尔值为true或“当前”。
}
}
]
]
}
有关为此配置babel的更多信息,请参见此


意见

不要依赖Parcel之类的零配置工具:它们最终会通过创建意外的行为(如您的问题)增加您的开发时间,或者您必须花时间学习它是如何工作的。调试自己的应用程序就足够了;您也不必调试构建工具。

如果您针对的是较新的浏览器,则可以将browserslist参数设置为针对较新的浏览器。类似于package.json文件中的内容:“浏览器列表”:[“Chrome 70”、“Edge 17”、“Firefox 68”、“Opera 60”、“Safari 12”]。。。。。如果您的项目是以另一种方式设置的,google将了解如何在不使用package.json的情况下使用browserslist