I've gotten an SVG react component auto converted from the SVGR playground page, and put it in my project (as well as installing @svgr/webpack and setting up the config as directed) - when trying to load the page, the following error comes up:
./img/PlaneIcon
Module parse failed: Unexpected token (2:2)
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
| const PlaneIcon = (props) => (
> <svg
| width={687.135}
| height={687.135}
Import trace for requested module:
./pages/world.js
I've tried looking for solutions, but most things seem to be focused on how to load .svg files (which also seems to be what the next.config.js file is handling) - I've seen no indication that inline svg in jsx should even need a webpack loader, although I'm pretty new at working with next react so I might just be misunderstanding - any help would be really appreciated.
SVG Component:
const PlaneIcon = (props) => (
<svg
width={687.135}
height={687.135}
viewBox="0 0 181.804 181.804"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<defs>
<filter
style={{
colorInterpolationFilters: "sRGB",
}}
id="a"
x={-0.096}
y={-0.096}
width={1.191}
height={1.191}
>
<feColorMatrix type="saturate" values={1} result="result91" />
<feComposite
in2="result91"
result="result15"
operator="arithmetic"
k2={0.4}
k1={0.3}
k3={0.3}
/>
<feGaussianBlur in="result15" result="result8" stdDeviation={5} />
<feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 50 0" />
<feComposite in2="SourceGraphic" operator="in" result="result13" />
<feComposite
in2="result13"
k3={0.3}
k1={0.3}
k2={0.4}
operator="arithmetic"
in="result15"
result="result6"
/>
<feFlood floodColor={props.cg} floodOpacity={1} result="result10" />
<feBlend in2="result10" result="result12" in="result6" mode="darken" />
<feBlend in2="result6" result="result14" mode="screen" />
<feComposite in2="SourceGraphic" in="result14" operator="in" />
</filter>
<filter
style={{
colorInterpolationFilters: "sRGB",
}}
id="b"
x={-0.076}
y={-0.076}
width={1.152}
height={1.152}
>
<feColorMatrix type="saturate" values={1} result="result91" />
<feComposite
in2="result91"
result="result15"
operator="arithmetic"
k2={0.4}
k1={0.3}
k3={0.3}
/>
<feGaussianBlur in="result15" result="result8" stdDeviation={5} />
<feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 50 0" />
<feComposite in2="SourceGraphic" operator="in" result="result13" />
<feComposite
in2="result13"
k3={0.3}
k1={0.3}
k2={0.4}
operator="arithmetic"
in="result15"
result="result6"
/>
<feFlood floodColor={props.cg} floodOpacity={1} result="result10" />
<feBlend in2="result10" result="result12" in="result6" mode="darken" />
<feBlend in2="result6" result="result14" mode="screen" />
<feComposite in2="SourceGraphic" in="result14" operator="in" />
</filter>
<filter
style={{
colorInterpolationFilters: "sRGB",
}}
id="c"
x={-0.112}
y={-0.112}
width={1.225}
height={1.225}
>
<feColorMatrix type="saturate" values={1} result="result91" />
<feComposite
in2="result91"
result="result15"
operator="arithmetic"
k2={0.4}
k1={0.3}
k3={0.3}
/>
<feGaussianBlur in="result15" result="result8" stdDeviation={5} />
<feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 50 0" />
<feComposite in2="SourceGraphic" operator="in" result="result13" />
<feComposite
in2="result13"
k3={0.3}
k1={0.3}
k2={0.4}
operator="arithmetic"
in="result15"
result="result6"
/>
<feFlood floodColor={props.cg} floodOpacity={1} result="result10" />
<feBlend in2="result10" result="result12" in="result6" mode="darken" />
<feBlend in2="result6" result="result14" mode="screen" />
<feComposite in2="SourceGraphic" in="result14" operator="in" />
</filter>
</defs>
<g transform="translate(-12.564 -34.15)">
<circle
style={{
opacity: 0.61747,
fill: props.c1,
fillOpacity: 1,
stroke: props.c2,
strokeWidth: 1.07236,
strokeOpacity: 1,
filter: "url(#a)",
stopColor: "#000",
}}
cx={103.466}
cy={125.053}
r={65.504}
/>
<path
style={{
opacity: 0.61747,
fill: props.c1,
fillOpacity: 1,
stroke: "none",
strokeWidth: 1.29171,
filter: "url(#b)",
stopColor: "#000",
}}
d="M103.466 46.15a78.902 78.902 0 0 0-78.902 78.903 78.902 78.902 0 0 0 78.902 78.902 78.902 78.902 0 0 0 78.902-78.902 78.902 78.902 0 0 0-78.902-78.902zm-.239 7.58a71.214 71.214 0 0 1 28.145 5.683c11.695 4.948 22.038 13.129 29.56 23.387 7.28 9.88 11.906 21.623 13.354 33.744.512 4.224.619 8.467.371 12.72a72.722 72.722 0 0 1-1.214 9.533 71.157 71.157 0 0 1-2.216 8.475 72.638 72.638 0 0 1-3.927 9.586 73.54 73.54 0 0 1-4.892 8.339 72.379 72.379 0 0 1-5.277 6.821 73.484 73.484 0 0 1-6.843 6.83c-2.226 1.913-4.544 3.726-6.99 5.351-2.787 1.894-5.725 3.56-8.749 5.044-2.887 1.378-5.854 2.592-8.898 3.581a71.154 71.154 0 0 1-8.496 2.215 72.37 72.37 0 0 1-9.513 1.206c-2.845.16-5.701.164-8.545-.015a72.136 72.136 0 0 1-9.455-1.215c-2.888-.586-5.753-1.315-8.547-2.255a71.089 71.089 0 0 1-9.574-3.948 72.68 72.68 0 0 1-8.266-4.863 71.765 71.765 0 0 1-6.812-5.285 72.684 72.684 0 0 1-6.772-6.791c-1.925-2.24-3.749-4.574-5.382-7.036-1.911-2.817-3.59-5.787-5.079-8.847a73.447 73.447 0 0 1-3.593-8.978 71.036 71.036 0 0 1-2.178-8.504c-.664-3.392-1.052-6.834-1.219-10.286-.129-3.17-.07-6.349.218-9.51a70.893 70.893 0 0 1 1.32-8.7 71.51 71.51 0 0 1 2.613-9.123 71.948 71.948 0 0 1 3.445-7.993c1.422-2.838 3.057-5.563 4.84-8.188 1.655-2.383 3.428-4.688 5.358-6.855 2.267-2.584 4.739-4.983 7.351-7.214 2.43-2.041 4.976-3.944 7.655-5.646a71.737 71.737 0 0 1 7.51-4.198 73.629 73.629 0 0 1 9.052-3.617c2.864-.912 5.782-1.673 8.74-2.21 3.142-.618 6.33-.945 9.523-1.15l3.382-.087z"
/>
<path
style={{
opacity: 0.61747,
fill: props.c1,
fillOpacity: 1,
stroke: "none",
strokeWidth: 0.875042,
filter: "url(#c)",
stopColor: "#000",
}}
d="M103.466 71.602a53.45 53.45 0 0 0-53.45 53.45 53.45 53.45 0 0 0 53.45 53.452 53.45 53.45 0 0 0 53.45-53.451 53.45 53.45 0 0 0-53.45-53.45zm-.162 5.135a48.243 48.243 0 0 1 19.067 3.85c7.922 3.351 14.928 8.893 20.024 15.843a48.39 48.39 0 0 1 9.046 22.859c.347 2.861.42 5.735.252 8.617a48.202 48.202 0 0 1-2.324 12.199 49.208 49.208 0 0 1-2.66 6.493 49.818 49.818 0 0 1-3.314 5.65 49.033 49.033 0 0 1-3.575 4.62 49.783 49.783 0 0 1-4.635 4.627c-1.508 1.296-3.079 2.524-4.735 3.625a48.778 48.778 0 0 1-5.927 3.417 49.485 49.485 0 0 1-6.028 2.426 48.2 48.2 0 0 1-17.989 2.307c-2.15-.131-4.29-.409-6.404-.823a48.112 48.112 0 0 1-5.791-1.527 48.158 48.158 0 0 1-6.486-2.675 49.237 49.237 0 0 1-5.599-3.294 48.617 48.617 0 0 1-9.202-8.181c-1.304-1.517-2.54-3.098-3.646-4.766a48.178 48.178 0 0 1-3.44-5.994 49.756 49.756 0 0 1-2.435-6.081 48.122 48.122 0 0 1-1.476-5.761 48.443 48.443 0 0 1-.825-6.968c-.087-2.148-.048-4.301.147-6.442a48.443 48.443 0 0 1 2.664-12.074 48.74 48.74 0 0 1 2.335-5.415 48.75 48.75 0 0 1 3.279-5.547 48.818 48.818 0 0 1 3.629-4.644 48.575 48.575 0 0 1 4.98-4.887 48.618 48.618 0 0 1 5.185-3.825 48.597 48.597 0 0 1 5.087-2.843 49.878 49.878 0 0 1 6.133-2.45 47.566 47.566 0 0 1 5.921-1.498c2.128-.419 4.288-.64 6.451-.78l2.291-.058z"
/>
</g>
</svg>
)
export default PlaneIcon
Page I'm trying to use it on:
import PlaneIcon from '../img/PlaneIcon'
export default function World() {
return(
<div>
<PlaneIcon c1="#f0dda8" c2="#fcba03" cg="#fff2cf" />
</div>
)
}
next.config.js:
module.exports = {
webpack(config) {
config.module.rules.push({
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: ['@svgr/webpack'],
})
return config
},
}
CodePudding user response:
This is painfully embarassing but I figure I'll share this just so that anyone as oblivious as me can find this - the component file just didn't have a .js file extension, hence why webpack didnt know what to do with it.