klazuka / elm-hot

Hot module reloading for Elm
Other
74 stars 17 forks source link

Cannot init a headless Program #23

Open mingan opened 5 years ago

mingan commented 5 years ago

When the library gets used on top of a SharedWorker implemented as a worker program, the wrapping init function fails because document does not exist in the context of the worker.

The failing line in my case is hmr.js#L174 but L170 is going to have the same problem.

Adding a simple guard if (typeof document !== 'undefined') seems to solve the problem at least for me.

klazuka commented 5 years ago

I've never used the service worker api before. If you could post a simple demo app as a gist, I'd be happy to fix the bug.

mingan commented 5 years ago

Demo here https://github.com/mingan/elm-hot-issue-demo.

The expected behaviour is to see log output (current time every 3 seconds) from the shared worker.

I kicked it off from a starter repo and apart from adding a shared worker loader, I had to downgrade Webpack to version 3 to replicate the issue. V4 ended up with a different error which seems unrelated to this project (the injected HMR code references window directly).

klazuka commented 5 years ago

thanks!