Skip to content

Commit 4820e7b

Browse files
fix: token error with inline worker if minify is false
1 parent a4a72b7 commit 4820e7b

File tree

4 files changed

+44
-13
lines changed

4 files changed

+44
-13
lines changed

packages/playground/worker-thread-node/__tests__/serve.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,24 @@ const { join } = require('path')
44
* @param {boolean} isProd
55
*/
66
exports.serve = async function serve(root, isProd) {
7+
// make a build in either cases
8+
// make minified build if prod
79
if (isProd) {
810
const { build } = require('vite')
911
await build({
1012
configFile: join(root, 'vite.config.ts'),
1113
root,
1214
logLevel: 'silent'
1315
})
16+
} else {
17+
const { build } = require('vite')
18+
19+
const config = require(join(root, 'vite.config.ts')).serveConfig
20+
await build({
21+
...config,
22+
root,
23+
logLevel: 'silent'
24+
})
1425
}
1526

1627
return new Promise((resolve, _) => {

packages/playground/worker-thread-node/__tests__/worker-thread-node.spec.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import { isBuild, testDir } from '../../testUtils'
22
import fs from 'fs-extra'
33
import path from 'path'
44

5-
if (isBuild) {
6-
test('response from worker', async () => {
7-
const distDir = path.resolve(testDir, 'dist')
8-
const { run } = require(path.join(distDir, 'main.cjs'))
9-
expect(await run('ping')).toBe('pong')
10-
})
11-
12-
test('response from inline worker', async () => {
13-
const distDir = path.resolve(testDir, 'dist')
14-
const { inlineWorker } = require(path.join(distDir, 'main.cjs'))
15-
expect(await inlineWorker('ping')).toBe('this is inline node worker')
16-
})
5+
test('response from worker', async () => {
6+
const distDir = path.resolve(testDir, 'dist')
7+
const { run } = require(path.join(distDir, 'main.cjs'))
8+
expect(await run('ping')).toBe('pong')
9+
})
10+
11+
test('response from inline worker', async () => {
12+
const distDir = path.resolve(testDir, 'dist')
13+
const { inlineWorker } = require(path.join(distDir, 'main.cjs'))
14+
expect(await inlineWorker('ping')).toBe('this is inline node worker')
15+
})
1716

17+
if (isBuild) {
1818
test('worker code generation', async () => {
1919
const assetsDir = path.resolve(testDir, 'dist/assets')
2020
const distDir = path.resolve(testDir, 'dist')

packages/playground/worker-thread-node/vite.config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,20 @@ export default defineConfig({
1616
emptyOutDir: true
1717
}
1818
})
19+
20+
export const serveConfig = defineConfig({
21+
build: {
22+
target: 'node16',
23+
outDir: 'dist',
24+
lib: {
25+
entry: 'main.ts',
26+
formats: ['cjs'],
27+
fileName: 'main'
28+
},
29+
rollupOptions: {
30+
external: [...builtinModules]
31+
},
32+
minify: false,
33+
emptyOutDir: true
34+
}
35+
})

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,14 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin {
8383
const content = Buffer.from(code)
8484
if (query.inline != null) {
8585
if (isNode) {
86+
let code = content.toString().trim()
87+
code = code.replace(/\r?\n|\r/g, '')
88+
8689
return `
8790
import { Worker } from "worker_threads" \n
8891
import { join } from "path" \n
8992
export default function WorkerWrapper() {
90-
return new Worker(\'${content.toString().trim()}', { eval: true })
93+
return new Worker(\'${code}', { eval: true })
9194
}
9295
`
9396
}

0 commit comments

Comments
 (0)