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

使用Web Worker时Vite构建报错‘Unexpected early exit’求助

问题分析

开发环境正常但生产构建报错,核心原因是Vite处理Web Worker时,@jsquash/avif的WASM依赖未被正确处理,导致构建钩子的Promise无法resolve,触发提前退出。

修复方案

方案1:配置Vite正确处理Worker中的WASM依赖

在nuxt.config.ts中添加Vite配置,确保WASM文件被正确识别并打包:

export default defineNuxtConfig({
  vite: {
    assetsInclude: ['**/*.wasm'],
    worker: {
      format: 'es',
      topLevelAwait: true
    }
  }
})

方案2:修改Worker的导入方式,使用动态导入

将Worker中对@jsquash/avif的导入改为动态导入,避免构建时的同步处理阻塞:

onmessage = async (val) => {
  const { encode } = await import('@jsquash/avif');
  const avifBuffer = await encode(val.data);
  postMessage(avifBuffer);
};

方案3:强制预构建@jsquash/avif依赖

如果上述方案无效,强制Vite预构建该依赖:

export default defineNuxtConfig({
  vite: {
    optimizeDeps: {
      include: ['@jsquash/avif']
    }
  }
})

方案4:降级@jsquash/avif版本

部分新版本可能存在与Vite Worker打包的兼容性问题,尝试降级到稳定版本(比如1.1.0):

npm install @jsquash/avif@1.1.0
额外检查点
  • 确保convertToAvifFile函数中的loadedImage变量已正确定义(当前代码片段中未看到该变量赋值,可能是笔误)
  • 给Worker实例添加错误监听,避免构建时未捕获的异常:
convWorker.onerror = (error) => {
  rej(error);
};

内容的提问来源于stack exchange,提问作者Apophis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:52:16