无法正确设置 webpack svg-inline-loader。SVG 图像不出现

Arn*_*kus 5 svg webpack

我想加载 svg 图像,所以我下载了 svg-inline-loader。并使用此示例进行配置:Webpack svg-inline-loader。尝试加载 svg 文件后,我得到了这个。不使用 webpack svg-inline-loader 加载 svg 文件会给我一个错误。任何想法我该如何解决?

在此处输入图片说明

HTML

<img src="./svg/facebook-square-brands.svg" alt="Facebook"/>
Run Code Online (Sandbox Code Playgroud)

我的 Webpack 配置文件.js

const HtmlWebPackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
  entry:{
    scripts: "./src/scripts/index.js",
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
        }
      },
      {
        test: /\.html$/,
        use: [{ loader: "html-loader", options: { minimize: true } }]
      },
      {
        test: /\.(png|jpe?g)/i,
        use: [
          {
            loader: "url-loader",
            options: {
              name: "./img/[name].[ext]",
              limit: 10000
            }
          },
          {
            loader: "img-loader",
          }
        ]
      },
      {
        test: /\.svg$/,
        use: [
          {
            loader: 'svg-inline-loader',
          }
        ] 
      },
      {
        test: /\.scss$/,
        use: [
          MiniCssExtractPlugin.loader,
          "css-loader",
          "postcss-loader",
          "sass-loader"
        ]
      }    
    ]
  },
  plugins: [
    new HtmlWebPackPlugin({
      template: "src/index.html",
      filename: "./index.html"
    }),
    new MiniCssExtractPlugin({
      filename: "[name].css",
      chunkFilename: "[id].css"
    })
  ]
};
Run Code Online (Sandbox Code Playgroud)

PackageJson 依赖项:

 "devDependencies": {
    "@babel/core": "^7.2.0",
    "@babel/preset-env": "^7.2.0",
    "@babel/preset-react": "^7.0.0",
    "autoprefixer": "^9.4.1",
    "babel-loader": "^8.0.4",
    "css-loader": "^1.0.1",
    "file-loader": "^2.0.0",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "img-loader": "^3.0.1",
    "mini-css-extract-plugin": "^0.4.5",
    "node-sass": "^4.10.0",
    "postcss-loader": "^3.0.0",
    "sass-loader": "^7.1.0",
    "svg-inline-loader": "^0.8.0",
    "url-loader": "^1.1.2",
    "webpack": "^4.26.1",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.1.14"
  },
Run Code Online (Sandbox Code Playgroud)

小智 3

我知道问题提出已经一年多了,但我为未来登陆这里的人添加了一个答案。

svg-inline-loader假设用于使用 svg inline 作为它自己注入的文件。您想要完成的最好使用 或url-loader( svg-url-loaderhttps://www.npmjs.com/package/svg-url-loader )将 svg 转换为 base64,以便您可以在 src-attribute 中使用它。

如果您想同时使用两者,可以将其与以下 oneOf 配置结合起来:

{
    test: /\.svg$/,
    oneOf: [
        {
            include: path.resolve(__dirname, '../node_modules/package-name/'),
            use: 'svg-inline-loader'
        },
        {
            exclude: path.resolve(__dirname, '../node_modules/package-name/'),
            use: 'url-loader'
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)