如何在 npm 包中使用 web worker?

问题描述 投票:0回答:0

想在vite中使用web worker开发一个工具库。 使用 web worker 上传大文件。

我为新 Worker 使用新 URL。 slice-upload-utils 项目在其他项目中运行正常 by workspace:*,

但是通过 pnpm install slice-upload-utils 在其他项目中使用它,web worker 在“slice-upload-utils”中出错。

我需要帮助。谢谢!

你可以克隆这个。 https://github.com/ywenhao/vite-web-worker-demo https://github.com/ywenhao/slice-upload-utils

复制 https://stackblitz.com/edit/vitejs-vite-1szu71?file=src/App.vue

export function getPreHashWorker(file: File) {
  const workURL = new URL('./worker/preHash.worker.ts', import.meta.url)

  return createWorkPromise<{ file: File }, { hash: string }>(workURL, { file })
}

export async function createWorkPromise<Params, Result>(workURL: URL, params: Params): Promise<Result> {
  return new Promise((resolve, reject) => {
    const worker = new Worker(workURL, {
      type: 'module',
    })
    worker.onmessage = (event) => {
      resolve(event.data)
    }
    worker.onerror = (event) => {
      reject(event)
    }
    worker.postMessage(params)
  })
}
vite web-worker npm-package
© www.soinside.com 2019 - 2024. All rights reserved.