科技微讯

esbuild 解决 regeneratorRuntime is not defined 的方法

试用了一下阿里云的小程序云,想在云函数使用 @alicloud/mpserverless-node-sdk 操作数据库,云函数我用 esbuild 打包,但打包后的云函数在运行时提示 regeneratorRuntime is not defined 错误。

这是因为 @alicloud/mpserverless-node-sdk 用了 regenerator-runtime 这个依赖,使用 esbuild 打包后的云函数代码没有使用 const 等关键词声明 regeneratorRuntime 这个变量就直接用了,所以就出现 xx 变量没有被 defined 的报错。

解决方法是让 esbuild 在打包后的代码开头增加一行 var regeneratorRuntime;,这可以通过 esbuild 的 banner 参数实现,例如:

esbuild ./index.js --banner:js='var regeneratorRuntime;' --bundle --minify --platform=node --target=node14 --outfile=./code/index.js
暂无评论