You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Node.js ESM环境加载wasm-pack构建的库时出现错误

问题:Node.js ESM环境中使用wasm-pack构建的库出现".wasm"文件扩展名未知错误

我发布了一个用wasm-pack构建的fhe-wasm库,但在使用时遇到如下错误:

file:///mnt/user-data/jan/aztec2-internal/yarn-project/.pnp.loader.mjs:131
      throw new Error(`Unknown file extension ".wasm" for ${filepath}`);
            ^

Error: Unknown file extension ".wasm" for /mnt/user-data/jan/aztec2-internal/yarn-project/.yarn/cache/fhe-wasm-npm-0.1.4-159fe086bd-0b8014b75e.zip/node_modules/fhe-wasm/fhe_wasm_bg.wasm
    at getFileFormat (file:///mnt/user-data/jan/aztec2-internal/yarn-project/.pnp.loader.mjs:131:13)
    at load$1 (file:///mnt/user-data/jan/aztec2-internal/yarn-project/.pnp.loader.mjs:185:18)
    at nextLoad (node:internal/modules/esm/loader:163:28)
    at ESMLoader.load (node:internal/modules/esm/loader:605:26)
    at ESMLoader.moduleProvider (node:internal/modules/esm/loader:457:22)
    at new ModuleJob (node:internal/modules/esm/module_job:63:26)
    at #createModuleJob (node:internal/modules/esm/loader:480:17)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:78:21)

请问有人知道该问题的原因吗?另外我注意到wasm-pack目前对Node.js的ESM支持不完善,已经修改了TypeScript绑定并提交了特性请求。


原因分析

这个错误的核心是:

  1. Node.js原生ESM加载器不支持直接导入.wasm文件,ESM规范中未将.wasm列为可直接导入的模块类型,必须通过WebAssembly相关API手动加载实例化。
  2. wasm-pack的Node.js ESM模板存在缺陷,它生成的绑定代码会尝试用import语句直接引入.wasm文件,这种写法在Node.js ESM环境下会触发扩展名识别错误。

解决方向

  • 手动修复绑定代码:将生成的TypeScript/JS绑定中的.wasm导入逻辑,替换为Node.js兼容的加载方式,例如:
    // 替换原有的import语句,改用fs读取并实例化
    import fs from 'fs';
    import path from 'path';
    const wasmBuffer = fs.readFileSync(path.join(__dirname, 'fhe_wasm_bg.wasm'));
    const { instance } = await WebAssembly.instantiate(wasmBuffer);
    
  • 适配Yarn PnP环境:由于你使用了Yarn PnP,需要在项目配置中添加.wasm扩展名的处理规则,让PnP加载器能够正确识别这类文件。
  • 等待官方修复:你提交的特性请求正是针对wasm-pack的ESM支持问题,可关注该请求的进展,等待官方推出兼容Node.js ESM的模板。

内容的提问来源于stack exchange,提问作者Jan Beneš

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:01:14