【发布时间】:2021-10-07 05:39:04
【问题描述】:
我正在尝试使用 babel-plugin-inline-react-svg 在 NEXT.js 中导入 svg 文件。
按照所有说明操作,它工作正常。
// .babelrc
{
"presets": ["next/babel"],
"plugins": [
["styled-components", { "ssr": true }],
"inline-react-svg"
]
}
// image.tsx
import styled from 'styled-components';
import BackgroundImage from '../public/assets/img.svg';
export const WhyChooseUsSection = () => {
return <>
<div className="background">
<BackgroundImage/>
</div>
<style jsx>{`
div {
position: relative;
width: 100%;
}
`}</style>
</>
}
// next.config.js
const withImages = require('next-images')
module.exports = withImages()
但它会出现警告。
Warning: Invalid attribute name: `'data-name'`
这是因为打字稿吗?我该如何解决?
【问题讨论】:
-
这个警告发生在哪里?我在您发布的代码中看不到任何名为
data-name的属性。我猜它存在于您的 SVG 文件中。您可以检查一下并将您的next.config.js添加到您的问题中吗? -
是的。 SVG 文件中有
data-name属性。这是一个很大的文件,所以我不能在这里写。 -
@brc-dd 我使用了
next-images。我可以一起使用吗? -
是的,它们可以一起使用。虽然我猜
next-images在某种程度上干扰了babel-plugin-inline-react-svg,因为问题是fixed 与后者。您可以尝试编辑您的next.config.js以从next-images中排除svg文件吗?这是documentation。如果这也不起作用,请尝试在您的 babelrc 中设置inline-react-svg的选项:github.com/airbnb/babel-plugin-inline-react-svg#options -
那么首先你根本不需要
next-images。其次,尝试配置 webpack,因为可能 next.js 新的静态导入功能会导致此问题。安装相关软件包后,更改您的next.config.js,如此答案中所述:stackoverflow.com/a/67641345/11613622。
标签: reactjs typescript svg next.js react-typescript