Skip to content
This repository was archived by the owner on Apr 19, 2026. It is now read-only.
This repository was archived by the owner on Apr 19, 2026. It is now read-only.

Subworkers loaded from incorrect URL? #31

Open

Description

@jamiewinder

I have worker that is loaded from the main code:

const worker = new Worker('./MainWorker.js', {
    name: 'main',
    type: 'module'
});

And within this worker, it tries to load a subworker:

const subworker = new Worker('./Subworker.js', {
    name: 'sub',
    type: 'module'
});

When webpack bundles this, the browser correctly and successfully loads the main worker from 'dist/main.worker.js', however it then tries to load the subworker from 'dist/dist/sub.worker.js' which isn't where the worker bundle was built to.

I'm not sure if this is a config problem on my side or an issue with the plugin. Here are the relevant parts of my webpack config:

{
    entry: ['./src/index.js'],
    output: {
        path: path.join(__dirname, 'dist'),
        filename: '[name].js',
        publicPath: 'dist/'
    },
    plugins: [
        new WorkerPlugin({
            filename: '[name].worker.js'
        })
    ]
}

Activity

  1. developit commented on Jul 16, 2019

    @developit
    Contributor

    Hi there! You need to set your output.publicPath to an absolute URL:

    {
        entry: ['./src/index.js'],
        output: {
            path: path.join(__dirname, 'dist'),
            filename: '[name].js',
    -        publicPath: 'dist/'
    +        publicPath: '/dist/'
        },
        plugins: [
            new WorkerPlugin({
                filename: '[name].worker.js'
            })
        ]
    }

    It might be possible to address this in worker-plugin, but I'm not sure.

  2. jamiewinder commented on Jul 17, 2019

    @jamiewinder
    Author

    Thanks. I had tried that (successfully) but I want the URLs to be relative to my page rather than the root. I can't assume which URL the app will be loaded from.

  3. developit commented on Jul 26, 2019

    @developit
    Contributor

    @jamiewinder I'm not sure if it will work in the worker context, but you could set the public path dynamically at runtime (more info here):

    __webpack_public_path__ = location.pathname + '/dist';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions