vite icon indicating copy to clipboard operation
vite copied to clipboard

Document not defined in worker import

Open ldavidpace opened this issue 1 year ago • 8 comments

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

image

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

ldavidpace avatar Jun 26 '24 20:06 ldavidpace

This minimal reproduction included React and that is not necessary. https://stackblitz.com/edit/vitejs-vite-lblszh

ldavidpace avatar Jun 26 '24 20:06 ldavidpace

I am running into a similar issue after upgrading to vite 5. It could be a similar error to one that was fixed in vite 4 https://github.com/vitejs/vite/issues/12611

siefkenj avatar Jul 05 '24 17:07 siefkenj

Importing CSS files without ?url or ?raw in workers doesn't make sense as it's not possible to modify/inject CSS from workers directly. What is the expected behavior?

sapphi-red avatar Aug 21 '24 06:08 sapphi-red

Importing CSS files without ?url or ?raw in workers doesn't make sense as it's not possible to modify/inject CSS from workers directly. What is the expected behavior?

I would expect the CSS to be omitted with a warning during build time.

siefkenj avatar Aug 22 '24 15:08 siefkenj

Hi, I have the same issue! We are migrating from CRA to Vite and this is a show-stopper for us. It is a crucial part, yet it feels silly that we have to not move to Vite just because of this issue.

Vite version 6.0.7

leq382121 avatar Jan 23 '25 15:01 leq382121

Up ! still have issue here

viclafouch avatar Aug 10 '25 12:08 viclafouch