如何导入SVG文件并将其用作图像的src?

4

我遇到了一个问题,似乎无法解决。

我有一个需要包含在我的项目中的svg文件。由于我已经建立了自己的样板文件,我希望具有与CRA相同的功能,即可以将svg用作图像src。

例如:

<img src={svgfile} alt="some file" />

我需要做些什么来获得这个功能?
我尝试使用文件加载器使其工作,但会抛出错误。

{
    test: /\.(png|jpg|gif|svg)$/,
    use: [
      {
        loader: "file-loader",
        options: {}
      }
    ]
  },

任何帮助都将不胜感激。
SA
webpack 文件
{
  entry: "./src/browser/index.js",
  output: {
    path: path.resolve(__dirname, "public"),
    filename: "bundle.js",
    publicPath: "/"
  },
  module: {
    rules: [
      { test: /\.(js)$/, use: "babel-loader" },
      {
        test: /\.(png|jpg|gif|svg)$/,
        use: [
          {
            loader: "file-loader",
            options: {}
          }
        ]
      },
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      __isBrowser__: "true"
    })
  ]
}

请问您能否提供您的 webpack.config.js 的示例? - Juned Lanja
@JunedLanja已添加 - Strahinja Ajvaz
webpack.config.js 看起来不错。你遇到了什么错误? - Juned Lanja
你是否正在运行 webpack 命令来创建 bundle.js - Juned Lanja
我在刷新后没有关闭开发服务器。很抱歉浪费了您的时间。 - Strahinja Ajvaz
显示剩余6条评论
2个回答

3

喜欢

 import svgfile from “./path/fileName.svg”;

 <img src={svgfile} alt="some file" />

或者
<img src={require(“./path/fileName.svg”} alt="some file" />

请原谅我使用双引号,因为我是在手机上回答的。
请见谅,我在移动设备上回答问题,因此需要使用双引号。

2
只有在 @Strahinja Ajvaz 正确配置了 webpack 的情况下才能正常工作。 - Juned Lanja
@JunedLanja 它可以正确地渲染所有其他加载器,将JSX转译为JS和ES6转译为ES5。但这是唯一一个给我带来麻烦的。 - Strahinja Ajvaz
@StrahinjaAjvaz 请您点赞并接受解决你问题的答案,这将有助于未来的读者。 - Hemadri Dasari

0

你可以尝试像这样:

test: /\.(?:png|jpg|gif|svg)$/i,
use: [
  {
    loader: 'file-loader',
    options: {
      name: 'assets/[hash].[ext]',
    }
  },
]

assets 是导入文件在编译后存储的目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接