webpack: Rule with issuer is not applied when importing via require.context
Bug report
What is the current behavior?
Loaders are not applied for files, imported via require.context, if rule has “issuer” option.
If the current behavior is a bug, please provide the steps to reproduce. See reproduction https://github.com/huston007/webpack-issuer-repro
In short: In webpack.config:
rules: [
{
test: /\.svg/,
issuer: /\.js/, // Remove this line and everything works
loader: 'url-loader'
}
]
a.js:
function importAll (r) {
r.keys().forEach(r);
}
importAll(require.context('.', false, /\.svg$/));
Build error:
WARNING in ./circle.svg 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle cx="8" cy="8" r="8"/></svg>
@ . sync nonrecursive \.svg$ ./circle.svg
@ ./a.js
Note that it is doesn’t matter what is inside “issuer” property.
It also breaks if using wildcarded require like require('./'+fileName+'.svg')
What is the expected behavior? Loaders are applied in-spite of a way how file is imported: via direct require or via context.
Known workaround
It is possible to workaround by inlining loader syntax like: require.context('!file-loader!./', true, /\.svg$/)
Other relevant information: webpack version: 4.35.0 Node.js version: 10.15.0 Operating System: macOS
Maybe related to #6915
About this issue
- Original URL
- State: open
- Created 5 years ago
- Reactions: 15
- Comments: 16 (8 by maintainers)
Issue was closed because of inactivity.
If you think this is still a valid issue, please file a new issue with additional information.
Same problem with
import(`./${icon}.svg`)andrequire(`./${icon}.svg`)My config:What is the status on this guys ? For webpack
4.42.0this is still an issue 😦i think this is still an issue. there’s also an unreviewed PR #10362 for it.
npm webpack --versionyields 8.18.0 but I think I’m also suffering from this bug as it relates to https://github.com/vercel/next.js/discussions/15437