From f05a81387b6901622c86c2833f42420b8e18e95e Mon Sep 17 00:00:00 2001
From: yoho
Date: Wed, 30 Mar 2022 00:11:54 +0800
Subject: [PATCH] fix: import url worker two times (#7468)
---
.../worker/__tests__/es/es-worker.spec.ts | 4 +-
.../worker/emit-chunk-nested-worker.js | 25 +++-
.../worker/emit-chunk-sub-worker.js | 14 +-
packages/playground/worker/index.html | 10 +-
.../playground/worker/module-and-worker.js | 5 +
.../worker/worker/main-format-es.js | 20 ++-
.../playground/worker/worker/main-module.js | 1 +
packages/vite/src/node/plugins/define.ts | 8 +-
packages/vite/src/node/plugins/worker.ts | 127 +++++++++++++++---
.../src/node/plugins/workerImportMetaUrl.ts | 17 +--
10 files changed, 181 insertions(+), 50 deletions(-)
create mode 100644 packages/playground/worker/module-and-worker.js
diff --git a/packages/playground/worker/__tests__/es/es-worker.spec.ts b/packages/playground/worker/__tests__/es/es-worker.spec.ts
index 51497a0f5ebadd..c7fd0d6c19e4bc 100644
--- a/packages/playground/worker/__tests__/es/es-worker.spec.ts
+++ b/packages/playground/worker/__tests__/es/es-worker.spec.ts
@@ -60,7 +60,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
- expect(files.length).toBe(20)
+ expect(files.length).toBe(22)
const index = files.find((f) => f.includes('main-module'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
@@ -94,7 +94,7 @@ test('classic worker', async () => {
test('emit chunk', async () => {
expect(await page.textContent('.emti-chunk-worker')).toMatch(
- '{"msg1":"module1","msg2":"module2","msg3":"module3"}'
+ '["A string",{"type":"emit-chunk-sub-worker","data":"A string"},{"type":"module-and-worker:worker","data":"A string"},{"type":"module-and-worker:module","data":"module and worker"},{"type":"emit-chunk-sub-worker","data":{"module":"module and worker","msg1":"module1","msg2":"module2","msg3":"module3"}}]'
)
expect(await page.textContent('.emti-chunk-dynamic-import-worker')).toMatch(
'"A string/es/"'
diff --git a/packages/playground/worker/emit-chunk-nested-worker.js b/packages/playground/worker/emit-chunk-nested-worker.js
index dff0f5bc64c5ad..6cb72b9488cfaf 100644
--- a/packages/playground/worker/emit-chunk-nested-worker.js
+++ b/packages/playground/worker/emit-chunk-nested-worker.js
@@ -1,7 +1,28 @@
import SubWorker from './emit-chunk-sub-worker?worker'
-
const subWorker = new SubWorker()
subWorker.onmessage = (event) => {
- self.postMessage(event.data)
+ self.postMessage({
+ type: 'emit-chunk-sub-worker',
+ data: event.data
+ })
}
+
+const moduleWorker = new Worker(
+ new URL('./module-and-worker.js', import.meta.url),
+ { type: 'module' }
+)
+
+moduleWorker.onmessage = (event) => {
+ self.postMessage({
+ type: 'module-and-worker:worker',
+ data: event.data
+ })
+}
+
+import('./module-and-worker').then((res) => {
+ self.postMessage({
+ type: 'module-and-worker:module',
+ data: res.module
+ })
+})
diff --git a/packages/playground/worker/emit-chunk-sub-worker.js b/packages/playground/worker/emit-chunk-sub-worker.js
index bd6b1f6e4f7419..5d20becc781dd7 100644
--- a/packages/playground/worker/emit-chunk-sub-worker.js
+++ b/packages/playground/worker/emit-chunk-sub-worker.js
@@ -1,6 +1,8 @@
-Promise.all([import('./modules/module2'), import('./modules/module3')]).then(
- (data) => {
- const _data = { ...data[0], ...data[1] }
- self.postMessage(_data)
- }
-)
+Promise.all([
+ import('./module-and-worker'),
+ import('./modules/module2'),
+ import('./modules/module3')
+]).then((data) => {
+ const _data = { ...data[0], ...data[1], ...data[2] }
+ self.postMessage(_data)
+})
diff --git a/packages/playground/worker/index.html b/packages/playground/worker/index.html
index fb4b3e9e85bfc8..aec3995b60a06e 100644
--- a/packages/playground/worker/index.html
+++ b/packages/playground/worker/index.html
@@ -62,7 +62,9 @@
- worker emit chunk
+ worker emit chunk
+ module and worker:worker in worker file
+ module and worker:module in worker file
.emti-chunk-worker
@@ -73,6 +75,12 @@
+
+ module and worker:worker in simple file
+ .module-and-worker-worker
+
+
+