60frames / webpack-hot-server-middleware

:fire: Hot reload webpack bundles on the server
MIT License
324 stars 50 forks source link

Side effect from require server render from string #103

Closed cdoublev closed 3 years ago

cdoublev commented 3 years ago

Hello,

Following this Webpack issue.

When babel injects polyfills for Set proposals (specifically, the addAll method proposal) in the server render compiled code, those polyfills are evaluated by requireFromString while Webpack's file watcher (which evaluates the presence of addAll in Set to gather file paths) is reporting file changes. This makes it throw an error.

Would it be an acceptable workaround to wrap getServerRenderer in a function, in order to delay requireFromString until the middleware is run?

Ie. here:

- serverRenderer = getServerRenderer(filename, buffer, serverRendererOptions);
+ serverRenderer = () => getServerRenderer(filename, buffer, serverRendererOptions);

And here:

- serverRenderer(req, res, next);
+ serverRenderer()(req, res, next);

And here:

- return serverRenderer(ctx, next);
+ return serverRenderer()(ctx, next);