Tauri项目导入surrealdb.wasm时Vite编译报错求助
Tauri+Vite项目中surrealdb.wasm的坑解决指南
第一个坑:顶层await导致编译失败
导入surrealdb.wasm时直接报:
Error: Build failed with 6 errors:
node_modules/surrealdb.wasm/dist/full/index.js:8:13: ERROR: Top-level await is not available in the configured target environment ("chrome87", "edge88", "es2020", "firefox78", "safari14" + 2 overrides)
解决办法:
只改build.target和esbuild.target为esnext没用,得在Vite配置里同时开顶层await支持,还要覆盖优化依赖的esbuild配置:
export default defineConfig({ build: { target: 'esnext', }, optimizeDeps: { esbuildOptions: { target: 'esnext', supported: { 'top-level-await': true } } }, // 保留你原来的Tauri配置 tauri: { // ...你的现有配置 } })
第二个坑:加了top-level-await插件后找不到Wasm文件
装了插件后反而报:
Error: Not found: /node_modules/.vite/deps/index_bg.wasmat resolve (C:/my/directory/project_name/node_modules/@sveltejs/kit/src/runtime/server/respond.js:480:13)
解决办法:
直接把这个插件删掉!它会搞乱surrealdb.wasm的Wasm文件路径映射。另外还要让Vite别优化这个包,在配置里加排除:
export default defineConfig({ optimizeDeps: { exclude: ['surrealdb.wasm'], esbuildOptions: { target: 'esnext', supported: { 'top-level-await': true } } }, // 其他配置不变 })
最后补几个验证步骤
- 删了
node_modules/.vite缓存目录,重启开发服务器,避免缓存搞事。 - 如果导入还是有问题,直接写完整路径:
import { Surreal } from 'surrealdb.wasm/dist/full/index.js'。 - 检查Tauri权限:
tauri.conf.json里要开网络权限(连远程DB的话)或者本地文件权限(本地存储的话):
{ "tauri": { "allowlist": { "network": { "all": true, // 按需限制,别全开也行 "request": true } } } }
内容的提问来源于stack exchange,提问作者Ólavur Nón
相关产品推荐
相关产品推荐

