如何配置esbuild使其在以node12为目标打包时兼容顶层await?
如何配置esbuild使其在以node12为目标打包时兼容顶层await?
咱们先理清楚背景:await从Node 7.5版本就已经支持了,但顶层await(也就是不在异步函数里直接使用await)要到Node 14.8才正式纳入官方支持。不过你的场景很特殊——你的服务会把用户脚本包裹在一个函数里运行在Node 12环境,这就相当于把顶层await间接放到了异步函数里,所以实际运行时是可以正常工作的。
回到你的核心问题:用esbuild打包时,能不能把目标设为node12同时兼容顶层await?当然可以!你只需要在esbuild的配置里手动开启顶层await的支持就行:
- 如果用命令行打包,添加参数:
--supported:top-level-await=true - 如果用JS配置文件,在配置对象里加上:
supported: { 'top-level-await': true }
这样设置后,哪怕你把target指定为node12,esbuild也不会把顶层await判定为语法错误,而是会按照你的需求保留相关代码,完美适配你的服务运行场景。
备注:内容来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

