When using GHCJS to compile, the original modules from ghjs-base is exported.
However, this will allow tooling (such as intero, generating haddocks) to use the much faster GHC to compile GHCJS projects.
Prod GHC use case
For project that need to compile to both GHC and GHCJS for production, consider using jsaddle, which compiles to ghcjs-dom under GHC. However, the type signatures will change as the the IO monad becomes the JSM monad.
In your project cabal file, instead of using ghcjs-base, use ghcjs-base-stub
Version 0.1.x.x of ghjc-base-stub did not re-export the original ghcjs-base when compiling under GHCJS.
Version 0.2.x.x re-exports ghjs-base so that
cabal.project does not need preprocesisng to select which ghcjs base library to use.
This package is actually missing a few ghcjs-base modules that I have not got around to stubbing. Pull requests are welcome if you need those extra stubs. When making a stub, please do not create partial functions, just emit safe stubbed values. Eg. Bad
foo :: IO JSVal foo = undefined
foo :: IO JSVal foo = pure nullRef
How to build manually
git clone https://github.com/louispan/ghcjs-base-stub cd ghcjs-base git submodule update --init --recursive