如何在Webpack中加载SVG图像?

Mis*_*hko 8 webpack

我想在Webpack中使用svgo-loader加载SVG文件,但是我收到以下错误:

错误在./~/css-loader?modules&localIdentName=[name] [local][hash:base64:5]!./~/autoprefixer-loader!./~/less-loader!./ demo/src/components/App/components/Header/Header.less找不到模块:错误:无法解析模块/ users/mishamoroshko中的'logo.svg'/ react-autosuggest/demo/src/components/App/components/Header @ ./~/css-loader?modules&localIdentName=[name] [local] [hash:base64:5] !./~/autoprefixer-loader!./~/less-loader!./ demo/src/components/App/components/Header/Header.less 6:199-218

./demo/src/components/App/components/Header/Header.less中的错误模块构建失败:ModuleNotFoundError:找不到模块:错误:无法解析/ Users/mishamoroshko/react-autosuggest/demo中的模块'logo.svg'/SRC /组件/应用/组件/头

这是相关的代码位:

Webpack配置

module: {
  loaders: [
    {
      test: /\.less$/,
      loader: ExtractTextPlugin.extract('style', 'css?modules&localIdentName=[name]__[local]___[hash:base64:5]!autoprefixer!less'),
      exclude: /node_modules/
    },
    {
      test: /\.svg$/,
      loader: 'url?limit=8192!svgo'
    },
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

的package.json

"svgo": "^0.6.1",
"svgo-loader": "^1.1.0",
"url-loader": "^0.5.7",
...
Run Code Online (Sandbox Code Playgroud)

Header.less

.logo {
  background-image: url(./logo.svg);
}
Run Code Online (Sandbox Code Playgroud)

logo.svgHeader.less位于同一目录中.

我在这里错过了什么?


重现:

1. git clone git@github.com:moroshko/react-autosuggest.git
2. cd react-autosuggest
3. git checkout a5f1a99
4. npm install
5. npm start
Run Code Online (Sandbox Code Playgroud)

Mis*_*hko 5

这个css-loader问题似乎有关系.

作为解决方法,改变:

background-image: url(./logo.svg);
Run Code Online (Sandbox Code Playgroud)

至:

background-image: url(../parent-folder/logo.svg);
Run Code Online (Sandbox Code Playgroud)

解决了这个错误.