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

在Stackblitz的Lit Element项目中创建Web Worker遇错求助

问题分析与解决办法

这个错误不是Stackblitz的Bug,核心原因是Vite项目中Web Worker的加载方式不符合Vite的处理规则,导致请求worker.js时返回的是HTML页面(而非预期的JS文件),解析时遇到HTML的<符号触发语法错误。

可行解决办法

方法1:使用Vite原生Web Worker导入(推荐)

Vite支持通过特殊后缀?worker导入Web Worker文件,它会自动处理打包和路径解析。修改my-element.ts代码如下:

import Worker from './worker.js?worker';

constructor() {
  super();
  const worker = new Worker();
  console.log(worker);
  worker.postMessage('hello');
  worker.onmessage = (e) => {
    console.log(`The worker posted back ${e.data}`);
  };
}

这种方式无需额外配置,Vite会自动将worker.js打包为独立的Worker脚本,并生成正确的加载路径。

方法2:将Worker文件放入public目录

如果希望保留new Worker()的写法,可以将worker.js移动到项目根目录的public文件夹中,然后修改路径为根路径:

constructor() {
  super();
  const worker: Worker = new Worker('/worker.js');
  console.log(worker);
  worker.postMessage('hello');
  worker.onmessage = (e) => {
    console.log(`The worker posted back ${e.data}`);
  };
}

注意:这种方式Vite不会对Worker文件进行编译或打包优化,仅适合简单场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:52:09