如何在Web Worker中导入.js文件?importScripts调用失败求助
核对路径准确性
先确认./lg2.js的相对路径和gitworker.js的实际运行路径是否匹配。要是你的项目用了构建工具(比如Vite、Webpack),编译后的文件结构大概率和源码不一样,这时候得用构建工具能识别的路径,或者直接用项目根目录起步的绝对路径,比如/src/lg2.js。改用ES模块模式的Worker
要是你的环境支持ES模块,别用importScripts了,直接创建Worker时指定type: "module",然后用标准import语法导入:// 创建Worker的代码 const worker = new Worker('./gitworker.js', { type: 'module' });接着在gitworker.js里这么写:
import './lg2.js';这种方式更贴合现代JS模块规范,还能避开
importScripts的路径坑。检查构建工具配置(如果用了的话)
你用的是Solid.js,对应的构建工具比如Vite会自动处理Worker文件。直接在主代码里这么导入Worker就行:import GitWorker from './gitworker.js?worker'; const worker = new GitWorker();这时候gitworker.js里不管是
importScripts还是import,构建工具都会帮你正确解析打包。确认文件部署情况
得确保服务器上lg2.js和gitworker.js的实际位置对应上了,没出现文件丢了或者路径错了的情况。打开浏览器开发者工具的Network面板,看看请求lg2.js的状态,要是返回404,那肯定是路径问题没跑了。排查跨域问题(概率较低)
如果Worker和lg2.js不在同一个域名下,会触发CORS限制。这种情况要么让服务器配置CORS允许访问,要么把两个文件挪到同一个域名下。不过看你的情况是同项目文件,这个可能性不大,但可以顺手排查下。
内容的提问来源于stack exchange,提问作者Nikita

