Skip to content

Can't build statically if a library depends on window or document #81

@cwervo

Description

@cwervo

I recognize this is a special case so feel free to not support it!

I'm trying to get A-Frame (a webVR library) running within x0. It works with the development server:

animated gif-downsized_large

Unfortunately after running x0 build docs --static I get an error about window being undefined.

x0  @compositor/x0
 x0  ⠋ building static sitewebpack:///./node_modules/aframe/dist/aframe-master.js?:75415
window.hasNativeWebVRImplementation = !!window.navigator.getVRDisplays || !!window.navigator.getVRDevices;
^

ReferenceError: window is not defined
    at Object.148.../package (webpack:///./node_modules/aframe/dist/aframe-master.js?:75415:1)
    at s (webpack:///./node_modules/aframe/dist/aframe-master.js?:1:398)
    at e (webpack:///./node_modules/aframe/dist/aframe-master.js?:1:569)
    at eval (webpack:///./node_modules/aframe/dist/aframe-master.js?:1:598)
    at eval (webpack:///./node_modules/aframe/dist/aframe-master.js?:1:62)
    at eval (webpack:///./node_modules/aframe/dist/aframe-master.js?:1:83)
    at Object../node_modules/aframe/dist/aframe-master.js (/Users/sagejenson/dev/web_dev/x0-cwervo-test/dist/TEMP/App.js:5722:1)
    at __webpack_require__ (/Users/sagejenson/dev/web_dev/x0-cwervo-test/dist/TEMP/App.js:30:30)
    at eval (webpack:///./docs/about.js?:26:1)
    at Object../docs/about.js (/Users/sagejenson/dev/web_dev/x0-cwervo-test/dist/TEMP/App.js:5699:1)

I'm not too familiar with webpack but I recognize this is usually because the compilation environment assumes it's running in node, so I tried making this webpack.config.js:

// webpack.config.js
module.exports = {
    target: 'web'
};

But I get the same error, with & without --static for x0 build docs.


Note: this also happens when I try adding three.js, a popular 3D rendering library. If I add let window = {} the docs build step lets me know that document is not defined and so compilation of Three fails.


Any idea what custom configuration I should do here or if there's something that can be done on the x0 side?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions