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

基于Vue项目用Plasmo构建扩展时Worker字符串字面量报错求解决

解决Plasmo+Vue中Worker构造报错的问题

针对你遇到的Constructing a Worker with a string literal is not supported错误,这是因为Plasmo的打包机制无法直接识别字符串字面量形式的Worker文件路径,下面提供两种可行的修复方式:

方法一:使用URL对象构造Worker路径

这是最通用的解决方案,利用现代浏览器和打包工具支持的import.meta.url生成正确的文件URL,让Plasmo能正确解析并打包Worker文件:

state.worker = new Worker(
  new URL("../../services/timeTracker/trackTimeWorker.js", import.meta.url),
  // 如果你的Worker使用ES模块语法(import/export),需要添加这个参数
  { type: "module" }
);

方法二:将Worker作为模块导入(可选)

如果项目配置支持,也可以直接把Worker文件作为模块导入,再传入Worker构造函数:

import TrackTimeWorker from "../../services/timeTracker/trackTimeWorker.js?worker";

state.worker = new TrackTimeWorker();

注意:这种方式需要确保你的打包工具(Plasmo底层基于Vite)支持?worker后缀的导入语法,大部分场景下默认已支持。

关键说明

  • 原代码的问题在于:直接使用字符串字面量的相对路径,Plasmo的打包流程无法追踪到该文件,无法将其纳入打包产物,因此抛出错误。
  • 如果Worker内部依赖其他模块,务必开启type: "module",否则会出现模块语法无法识别的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:38:14