GoogleChromeLabs / comlink-loader

Webpack loader to offload modules to Worker threads seamlessly using Comlink.
https://npm.im/comlink-loader
Apache License 2.0
618 stars 40 forks source link

[v2] comlink needs to be an external for server bundle #19

Open jackyef opened 4 years ago

jackyef commented 4 years ago

I was playing around with comlink-loader with an isomorphic react app. I used multi and inline options.

For the client bundle, everything works fine, but it failed when bundling the server bundle.

export 'expose' was not found in 'comlink'

After some digging, I found out that it is fixed after I add /^comlink/ to webpack externals. (My webpack externals config is a bit different, I do not use webpack-node-externals)

So, is it expected that comlink only work when externalised? It didn't throw any error on v1 though.

developit commented 4 years ago

I haven't had a chance to dig into it yet, but my guess is that this happens due to your bundler ending up choosing the browser version of Comlink rather than the Node version. This is a tricky subject, since bundlers are often configured to prefer "browser" over "main".