Today I faced an issue, using React-Static. Issue is clearly described here.
TLDR: Images in production build have wrong paths and are not loaded
In the issue, martnokaufmann provided solution - modifying default file-loader inside node.api.js.
For me this didn't worked, however. After some research I discovered that provided solution work only for React-Static without plugins, that modify Webpack loader configuration.
Solution
If you are using plugins that modify Webpack loader configuration, for example react-static-plugin-svg, you must do some additional work inside node.api.js. This is required because plugins are loaded before loading node.api.js, so, there, we need to preserve plugin provided configuration also.
For me the solution looks like this:
export default pluginOptions => ({
webpack: (config, { defaultLoaders }) => {
const svgLoader = config.module.rules[0].oneOf[0]
config.module.rules = [
{
oneOf: [
svgLoader,
defaultLoaders.jsLoader,
defaultLoaders.jsLoaderExt,
defaultLoaders.cssLoader,
{
loader: 'url-loader',
test: /\.(jpg|png)$/,
query: {
limit: 100,
name: 'static/[name].[hash:8].[ext]',
},
},
state.defaultLoaders.fileLoader,
],
},
]
return config
},
})For you, the setup might be different. Main idea is that we need to save all plugin added rules (in my case const svgLoader = config.module.rules[0].oneOf[0]), before modifying rules.oneOf array and apply them there also.