Skh*_*haz 6 javascript jestjs babeljs parceljs
我正在使用 Parcel 来捆绑我的项目并使用 jest 来运行我的测试。
一切正常,但在我有async/await
关键字的测试中,我必须导入regenerator-runtime/runtime
像这样:
import "regenerator-runtime/runtime"
test("read armored key", async() => {
})
Run Code Online (Sandbox Code Playgroud)
还有这个作品。
但是如果没有这个 import ( import "regenerator-runtime/runtime"
) 我收到了这个错误消息:
ReferenceError: regeneratorRuntime is not defined
Run Code Online (Sandbox Code Playgroud)
如何更改我的项目以在异步测试中不进行此导入的情况下运行?
示例: https: //github.com/skhaz/parcel-regeneratorRuntime-is-not-define
Con*_*Low 11
根据其版本,并非浏览器运行时中可用的所有功能都可以在 Node 运行时中使用。当前版本的 Node 支持 Promise(使用 ),但由于您使用await/async
的是 Parcel,默认情况下使用 Babel,因此您的调用将被编译为使用,即该功能的一个 polyfill。你可以在每个入口文件中(如果你不需要polyfill,则不推荐!),或者你可以告诉babel你的运行时是什么。async/await
regenerator-runtime
import "regenerator-runtime/runtime"
您应该能够让它与@babel/preset-env预设一起使用,在您的以下配置中进行配置.babelrc
:
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "10" // the target node version, boolean true, or "current".
}
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
有关为此配置 babel 的更多信息,请参阅这篇Medium 文章:
我找到了解决我的麻烦的答案,并且当我实施它时它起作用了。
据我所知,您可以配置为针对此处@babel/preset-env
描述的当前节点版本进行编译,那么它应该可以工作:
.babelrc
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8089 次 |
最近记录: |