Skip to content

Commit 0672fd2

Browse files
authored
fix(worker): require(json) result should not be wrapped (#21847)
1 parent 86db93d commit 0672fd2

11 files changed

Lines changed: 53 additions & 5 deletions

File tree

packages/vite/src/node/plugins/worker.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,10 @@ async function bundleWorkerEntry(
204204
...rollupOptions.moduleTypes,
205205
},
206206
preserveEntrySignatures: false,
207+
experimental: {
208+
...rollupOptions.experimental,
209+
viteMode: true,
210+
},
207211
})
208212
let result: RolldownOutput
209213
let watchedFiles: string[] | undefined

playground/worker/__tests__/es/worker-es.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ describe.runIf(isBuild)('build', () => {
9696
test('inlined code generation', async () => {
9797
const assetsDir = path.resolve(testDir, 'dist/es/assets')
9898
const files = fs.readdirSync(assetsDir)
99-
expect(files.length).toBe(38)
99+
expect(files.length).toBe(40)
100100
const index = files.find((f) => f.includes('main-module'))
101101
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
102102
const worker = files.find((f) => f.includes('my-worker'))
@@ -191,6 +191,12 @@ test('import.meta.glob with eager in worker', async () => {
191191
.toMatch('["')
192192
})
193193

194+
test.runIf(isBuild)('require json in worker', async () => {
195+
await expect
196+
.poll(() => page.textContent('.worker-require-json'))
197+
.toMatch('[{"name":"a"},{"name":"b"}]')
198+
})
199+
194200
test('self reference worker', async () => {
195201
await expect
196202
.poll(() => page.textContent('.self-reference-worker'))

playground/worker/__tests__/iife/worker-iife.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ describe.runIf(isBuild)('build', () => {
8383
test('inlined code generation', async () => {
8484
const assetsDir = path.resolve(testDir, 'dist/iife/assets')
8585
const files = fs.readdirSync(assetsDir)
86-
expect(files.length).toBe(23)
86+
expect(files.length).toBe(24)
8787
const index = files.find((f) => f.includes('main-module'))
8888
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
8989
const worker = files.find((f) => f.includes('worker_entry-my-worker'))
@@ -159,6 +159,12 @@ test('import.meta.glob eager in worker', async () => {
159159
.toMatch('["')
160160
})
161161

162+
test.runIf(isBuild)('require json in worker', async () => {
163+
await expect
164+
.poll(() => page.textContent('.worker-require-json'))
165+
.toMatch('[{"name":"a"},{"name":"b"}]')
166+
})
167+
162168
test('self reference worker', async () => {
163169
await expect
164170
.poll(() => page.textContent('.self-reference-worker'))

playground/worker/__tests__/sourcemap-hidden/worker-sourcemap-hidden.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe.runIf(isBuild)('build', () => {
1010

1111
const files = fs.readdirSync(assetsDir)
1212
// should have 2 worker chunk
13-
expect(files.length).toBe(46)
13+
expect(files.length).toBe(48)
1414
const index = files.find((f) => f.includes('main-module'))
1515
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
1616
const indexSourcemap = getSourceMapUrl(content)

playground/worker/__tests__/sourcemap-inline/worker-sourcemap-inline.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe.runIf(isBuild)('build', () => {
1010

1111
const files = fs.readdirSync(assetsDir)
1212
// should have 2 worker chunk
13-
expect(files.length).toBe(23)
13+
expect(files.length).toBe(24)
1414
const index = files.find((f) => f.includes('main-module'))
1515
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
1616
const indexSourcemap = getSourceMapUrl(content)

playground/worker/__tests__/sourcemap/worker-sourcemap.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe.runIf(isBuild)('build', () => {
99
const assetsDir = path.resolve(testDir, 'dist/iife-sourcemap/assets')
1010
const files = fs.readdirSync(assetsDir)
1111
// should have 2 worker chunk
12-
expect(files.length).toBe(46)
12+
expect(files.length).toBe(48)
1313
const index = files.find((f) => f.includes('main-module'))
1414
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
1515
const indexSourcemap = getSourceMapUrl(content)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{ "name": "a" }, { "name": "b" }]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports.content = require('./data.json')

playground/worker/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ <h2 class="format-iife">format iife:</h2>
191191
</p>
192192
<code class="deeply-nested-third-worker"></code>
193193

194+
<p>
195+
require('./some.json') in worker
196+
<span class="classname">.worker-require-json</span>
197+
</p>
198+
<code class="worker-require-json"></code>
199+
194200
<hr />
195201

196202
<h2 class="format-es"></h2>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import('./dep-cjs-with-json/importer.cjs')
2+
.then((mod) => {
3+
self.postMessage({ ok: true, content: JSON.stringify(mod.content) })
4+
})
5+
.catch((err) => {
6+
self.postMessage({ ok: false, error: String(err) })
7+
})

0 commit comments

Comments
 (0)