WebpackワークフローでSVGを操作するのに多くの問題があります。 CSSのbackground: url(sample.svg)
プロパティで表示しようとしています。これだけではうまくいかなかったので、ローダーを使っていたと思いました。これが私が使用したステップです。
svg-url-loader を使用してSVGをロードしました。
1。npm経由でsvg-url-loader
をインストールし、これをmodule.exports
に追加しました。
{
test: /\.svg/,
use: {
loader: 'svg-url-loader'
}
},
2。これをindex.jsファイルの先頭に追加しました:
require('svg-url-loader!./images/topography.svg');
3。CSSへのSVGパスとともにbackground-image
を追加しました。
body {
background-image: url("../images/topography.svg");
background-size: 340px, auto;
min-height: calc(100vh - 100px);
margin: 50px;
background-attachment: fixed;
letter-spacing: -1px;
}
4。SVGがページにレンダリングされていません。ブラウザで本体を調べると、次のことがわかります。
background: url(data:image/svg+xml,module.exports = __webpack_public_path__ + '8dccca4….svg';);
Data-uriについてあまりよく知らないので、そこで問題が発生している可能性があります。
また、さまざまなSVGファイルを使用してこれを試しましたが、どれも機能しませんでした。
私はまったく同じエラーに遭遇しました。調査の結果、この問題の原因となった別のsvg
ローダーを追加したことがわかったので、他のsvg
ローダーを削除して修正しました。
{
test: /\.svg/,
use: {
loader: 'svg-url-loader'
}
},
{
test: /\.svg$/,
use: [
"babel-loader",
{
loader: "react-svg-loader",
options: {
svgo: {
plugins: [{ removeTitle: false }],
floatPrecision: 2
},
jsx: true
}
}
]
}
したがって、svg
ファイルを同時に処理するためにローダーを追加した可能性もあります。確認してください。
あなたはできる:
a)webpack.config.jsにローダーを設定します。
example.js:
import ExampleIcon from 'assets/icons/example-icon.svg';
...
<ExampleIcon className={styles.exampleIcon} />
webpack.config.js:
{
test: /\.svg$/,
use: [
{
loader: 'babel-loader',
},
{
loader: 'react-svg-loader',
options: {
svgo: {
plugins: [{ removeTitle: false }],
floatPrecision: 2
},
jsx: true
}
}
]
},
b)またはインポート文字列にローダーを設定します。
import ExampleIcon from '!babel-loader!react-svg-loader!assets/icons/example-icon.svg';
...
<ExampleIcon className={styles.exampleIcon} />