vite使用第三方wasm包的问题

前言

最近需要使用js生成xlsx。以前用的是xlsx.js+xlsx-style.js,但是这两个用起来太麻烦。于是开始寻找替代品,发现了这样一个库:

wasm-xlsxwriter

问题描述

于是先在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-wasmvite-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",],
  },
});

重新启动项目后就可以运行了

参考文章

  1. https://github.com/estie-inc/wasm-xlsxwriter
  2. https://www.npmjs.com/package/vite-plugin-wasm
  3. https://juejin.cn/post/7146143545433260045

vite使用第三方wasm包的问题
http://xuyuanhang.com//archives/viteshi-yong-di-san-fang-wasmbao-de-wen-ti
作者
许远航
发布于
2025年07月23日
许可协议