'Tree shaking with "process.browser" in webpack 5

I am in the process of migrating from webpack 4 to 5, and I am facing an error similar to

Module not found: Error: Can't resolve 'fs' in '...'

This is the code that generates the error

if (!process.browser) {
    const fs = require('fs');
    // ...
}

My understanding was that this code would be eliminated by tree shaking, in the same way as the following would be removed in the context of HMR:

if (import.meta.hot) {
    ...
}

I found many solutions for the runtime problem, like polyfilling the node modules or disabling them in the alias, but I would rather have webpack remove that code completely. Did this behavior change in webpack 5 or am I missing something?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source