Javascript “避免进口”;再生器运行时/运行时“;
我正在使用Parcel捆绑我的项目,并使用jest运行我的测试 一切正常,但在使用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
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