webpack-contrib / worker-loader

A webpack loader that registers a script as a Web Worker
MIT License
1.46k stars 273 forks source link

Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_1___default.a is not a constructor #309

Open adambyer opened 3 years ago

adambyer commented 3 years ago

Expected Behavior

Should get no errors and publicPath should work.

Actual Behavior

If I use webpack I get the following error when instantiating WORKER below... Uncaught TypeError: _dist_workers_worker_js__WEBPACK_IMPORTED_MODULE_1___default.a is not a constructor

If I import with worker-loader inline like import Worker from 'worker-loader!../../../dist/workers/worker.js' I don't get that error, but it doesn't seem that my publicPath in webpack is being applied because I get this error... `Security Error: Content at https://my-app.com may not load data from https://my-cdn.com/base/js/worker.bundle.worker.js.

Code

// webpack.config.js
{
    test: /\.worker\.js$/,
    use: {
        loader: 'worker-loader',
        options: {publicPath: '/workers/'},
    },
},
import Worker from '../../../dist/workers/worker.js'
const WORKER = new Worker()
alexander-akait commented 3 years ago

Unfortunately it is limitation https://github.com/webpack-contrib/worker-loader#cross-origin-policy, webpack v5 doesn't have this problem

adambyer commented 3 years ago

Thanks. The documentation you linked to is what I am trying to follow to get around the cross-origin issue. I've tried both recommended workarounds with no luck. Are you saying those workarounds require webpack v5?

alexander-akait commented 3 years ago

@adambyer Can you provide simple reproducible test repo?

afuggini commented 3 years ago

It seems related to the fact that your worker.js file is not exporting anything, but then you are importing it. I am having a similar issue when following the README examples.

marklsl commented 3 years ago

I have the same problem