vite使用第三方wasm包的问题
前言
最近需要使用js生成xlsx。以前用的是xlsx.js+xlsx-style.js,但是这两个用起来太麻烦。于是开始寻找替代品,发现了这样一个库:
问题描述
于是先在demo里跑了一下,没问题后准备迁移到项目里。没想到竟然报错,于是开始解决问题
- 安装wasm-xlsxwriter后。运行时提示:
-
Uncaught (in promise) CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0
定位了一下报错位置,发现是初始化的时候报错。才想到vite原生是不支持wasm的,需要安装插件
解决方案
安装两个插件:
vite-plugin-wasm
,vite-plugin-top-level-await
在vite.config.js中配置
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import wasm from "vite-plugin-wasm";
import topLevelAwait from "vite-plugin-top-level-await";
// https://vite.dev/config/
export default defineConfig({
plugins: [vue(), wasm(), topLevelAwait()],
optimizeDeps: {
// 很重要,解决warm文件引用路径问题
exclude: ["wasm-xlsxwriter",],
},
});
重新启动项目后就可以运行了
参考文章
- https://github.com/estie-inc/wasm-xlsxwriter
- https://www.npmjs.com/package/vite-plugin-wasm
- https://juejin.cn/post/7146143545433260045
vite使用第三方wasm包的问题
http://xuyuanhang.com//archives/viteshi-yong-di-san-fang-wasmbao-de-wen-ti