You need to provide a webpack loader that will handle SVG imports, one of the famous one is svgr.
In order to configure it to work with next, you need to add to your next.config.js
file the usage of the loader, like that:
// next.config.js
module.exports = {
webpack(config) {
config.module.rules.push({
test: /.svg$/,
issuer: {
test: /.(js|ts)x?$/,
// for webpack 5 use
// { and: [/.(js|ts)x?$/] }
},
use: ['@svgr/webpack'],
});
return config;
},
};
For more config info, check out the docs.
Don't forget to install @svgr/webpack
first:
$ npm install --save-dev @svgr/webpack
Edit
I've added an issuer
section which strict these svg as component only for svgs that are imported from js / ts
files.
This allows you to configure other behaviour for svg
s that are imported from other file types (such as .css
)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…