启动项目时报此错误:Transforming async generator functions to the configured target environment ("es2015") is not supported yet
build时也会报错: Transforming async generator functions to the configured target environment ("es2015") is not supported yet
原因是:
在vite.config.js中build.target指定为了es2015,会使用esbuild进行转换到浏览器兼容目标。
build: {
target: "es2015",
outDir: OUTPUT_DIR,
// minify: "terser", // 如果需要用terser混淆,可打开这两行
// terserOptions,
rollupOptions,
brotliSize,
chunkSizeWarningLimit
}
但是新版本 axios 代码使用了旧的 esbuild 版本 中不支持的 JS 功能async generator functions导致报错。
解决办法一:
esbuild升级为 ^0.18.2 及以上可解决此问题, 见此链接: https://github.com/evanw/esbuild/pull/3194
将vite升级为 5.0.0即可 从npm上可看到5.0.0用的是"esbuild": "^0.19.3",
解决办法二:
或者降低axios版本为^0.27.0
解决办法三:
修改vite.config.js中build.target: "es2015", 为es2020 不进行转换即可。
额外 vite命令:
vite(开发服务器): 用esbuild预编译完依赖就直接启动开发服务器,实际上是让浏览器接管了打包程序的部分工作: 会启动一个 服务器拦截由浏览器请求 ESM源码的请求。通过请求的路径找到目录下对应的文件做一下编译处理最终以 ESM的格式返回给浏览器
(ps: node_modules下面的依赖,vite会使用esbuild进行预构建缓存到/node_module/.vite目录下 )
vite dev、vite serve 是 vite 的别名
vite build构建生产环境:将确实用于打包您的代码 – 它将解析所有语句并将您的文件打包成一个(或几个)优化的chunks。但是,文件仍然将esbuild用于build.target指定的浏览器兼容目标的转换过程。
所以转换这一块是相同的,无论是 dev还是build 都是由esbuild来处理。