Recently I updated to the latest version at the time of writing this post 5.0.2
of the file-loader
plugin for Webpack. I use this for dealing with some image files in my project amongst other things.
To my surprise after updating, I noticed my SVG images had all broken without explanation. It turns out a recent fix to the esModule
option had enabled a default value of true for esModule
which generates Javascript modules that use ES syntax.
This simple fix had some serious consequences in my application, all of my SVG image elements were showing [object Module]
as the source (which clearly is not going to work).
Now, it does not take a genius to see the problem here. If you are dealing with SVG files, this is going to break them. Maybe the file-loader
plugin was never intended to be used with SVG images, but I and many others do, so it is a bit of a problem.
To cut a long story short, the fix is to set esModule
to false:
{ test: /\.(ttf|eot|svg|otf)(\?v=[0-9]\.[0-9]\.[0-9])?$/i, loader: 'file-loader', options: { esModule: false, }, },
This essentially reverts the behaviour back to the way file-loader
has always worked, by using CommonJS syntax to resolve back to the default export of the file itself.