From 8ac4b12fefb42c748e92f0ea5f93374a0739748e Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 27 Mar 2022 15:46:49 +0800 Subject: [PATCH] fix: import.meta.url in worker (#7464) --- packages/playground/worker/__tests__/worker.spec.ts | 7 +++++-- packages/playground/worker/sub-worker.js | 2 +- packages/playground/worker/url-worker.js | 2 +- packages/vite/src/node/plugins/define.ts | 8 +++++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index fc381467f6a4d2..263c49cff52fb9 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -51,8 +51,11 @@ test.concurrent.each([[true], [false]])('shared worker', async (doTick) => { await waitSharedWorkerTick(page) }) -test('worker emitted', async () => { - await untilUpdated(() => page.textContent('.nested-worker'), 'pong') +test('worker emitted and import.meta.url in nested worker', async () => { + await untilUpdated( + () => page.textContent('.nested-worker'), + 'pong http://localhost:3000/iife/sub-worker.js?worker_file' + ) }) if (isBuild) { diff --git a/packages/playground/worker/sub-worker.js b/packages/playground/worker/sub-worker.js index eec65b86a0382a..eff49dfbb46ba6 100644 --- a/packages/playground/worker/sub-worker.js +++ b/packages/playground/worker/sub-worker.js @@ -1,5 +1,5 @@ self.onmessage = (event) => { if (event.data === 'ping') { - self.postMessage('pong') + self.postMessage(`pong ${import.meta.url}`) } } diff --git a/packages/playground/worker/url-worker.js b/packages/playground/worker/url-worker.js index 79d05da0f06082..c25cbefdff89ec 100644 --- a/packages/playground/worker/url-worker.js +++ b/packages/playground/worker/url-worker.js @@ -1 +1 @@ -self.postMessage('A string' + import.meta.env.BASE_URL) +self.postMessage('A string' + import.meta.env.BASE_URL + import.meta.url) diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index 19ca28b34433a0..024cf32d41f72a 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -10,6 +10,7 @@ const isNonJsRequest = (request: string): boolean => nonJsRe.test(request) export function definePlugin(config: ResolvedConfig): Plugin { const isBuild = config.command === 'build' + const isWorker = config.isWorker const processNodeEnv: Record = { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || config.mode), @@ -40,7 +41,12 @@ export function definePlugin(config: ResolvedConfig): Plugin { Object.assign(importMetaKeys, { 'import.meta.env.': `({}).`, 'import.meta.env': JSON.stringify(config.env), - 'import.meta.hot': `false` + 'import.meta.hot': `false`, + ...(isWorker + ? { + 'import.meta.url': 'self.location.href' + } + : {}) }) }