Document not defined in worker import
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82.9k
- Forks
- 8.8k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 61
Description
Describe the bug
While running in dev mode and importing a worker that has dependency on a css file. The worker fails to start with document not defined
I have created a minimal reproduction of the issue on stackblitz
worker.ts
import styles from './worker.module.css';
self.onmessage = () => {
console.log('hello world', styles.container);
};
imported in
App.tsx
import * as React from 'react';
import reactLogo from './assets/react.svg';
import viteLogo from '/vite.svg';
import './App.css';
import worker from './worker.ts?worker';
function App() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
const w = new worker();
w.postMessage('hey');
}, []);
return (
<>
<div>
<a href="https://vitejs.dev" target="_blank">
<img src={viteLogo} className="logo" alt="Vite logo" />
</a>
<a href="https://react.dev" target="_blank">
<img src={reactLogo} className="logo react" alt="React logo" />
</a>
</div>
<h1>Vite + React</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<p>
Edit <code>src/App.tsx</code> and save to test HMR
</p>
</div>
<p className="read-the-docs">
Click on the Vite and React logos to learn more
</p>
</>
);
}
export default App;
Reproduction
https://stackblitz.com/edit/vitejs-vite-t1i3lx
Steps to reproduce
Run npm install then run npm run start
Expected:
console log of Hello world hash
Actual:
Console throws errors and webWorker fails to start.
System Info
System:
OS: Linux 5.0 undefined
CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 0 Bytes / 0 Bytes
Shell: 1.0 - /bin/jsh
Binaries:
Node: 18.20.3 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 10.2.3 - /usr/local/bin/npm
pnpm: 8.15.6 - /usr/local/bin/pnpm
npmPackages:
@vitejs/plugin-react: ^4.3.1 => 4.3.1
vite: ^5.3.1 => 5.3.1
Used Package Manager
npm
Logs
No response
Validations
- Follow our Code of Conduct
- Read the Contributing Guidelines.
- Read the docs.
- Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
- Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- The provided reproduction is a minimal reproducible example of the bug.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked StackBlitz reproduction and the worker.ts and App.tsx examples, then trace the dev-mode import path for a worker that depends on worker.module.css. The work is done when the worker starts without a document error and logs the expected message with the generated style value.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css, react, typescript
- Domain
- build-system, frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100