Webpack Sass - 无法解析图像

时间:2017-03-03 09:55:42

标签: webpack sass-loader

我正在尝试通过webpack编译我的Sass。编译正常sass很好,但我收到错误。

 Module not found: Error: Can't resolve '../img/twitter.svg' in '/Users/Steve/mywebsite/scss'
     @ ./~/css-loader!./~/sass-loader/lib/loader.js!./scss/main.scss 6:94501-94530

有没有办法解决这个问题?或者有一种方法可以将sass编译器的级别设置为不那么严格,只是忽略某些错误

以下是我当前的配置。

var webpack = require('webpack');
var path = require('path');
let ExtractTextPlugin = require("extract-text-webpack-plugin");


module.exports = {

    resolve: {
    alias: {
      'masonry': 'masonry-layout',
      'isotope': 'isotope-layout'
    }
  },

    entry: './main.js',
    output: {
        path: path.resolve(__dirname, './dist/dist2'),
        filename: 'bundle.js'
    },

    module: {
        rules: [
{

    test    : /\.(png|jpg|svg)$/,
    include : path.join(__dirname, '/dist/img'),
    loader  : 'url-loader?limit=30000&name=images/[name].[ext]'
},
         {  test: /\.js$/, 
                exclude: /node_modules/, 
                loader: "babel-loader?presets[]=es2015",

             },

            {
                test:/\.scss$/,
                use: ExtractTextPlugin.extract({
                    use: ['css-loader', 'sass-loader'],

                })
            },

            {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
          }
          // other vue-loader options go here
        }
      },



        ]
    },

    plugins: [

        //new webpack.optimize.UglifyJsPlugin(),
        new ExtractTextPlugin('ross.css')

    ]

};

4 个答案:

答案 0 :(得分:1)

您没有为webpack文件中的图像指定任何加载器。

  1. url-loaderfile-loader安装到 package.json
  2. 通过

    npm install --save url-loader file-loader
    
    1. 在您的webpack配置文件中添加以下内容 -

      {
              test    : /\.(png|jpg|svg)$/,
              include : path.join(__dirname, 'img'),
              loader  : 'url-loader?limit=30000&name=images/[name].[ext]'
          }, // inline base64 URLs for <=30k images, direct URLs for the rest
      

答案 1 :(得分:1)

我知道这已经很晚了,但是对于任何寻求解决方法的人来说,这个错误都可以解决。 就我而言,图像已完美地加载到模板中,但是,Webpack返回错误:open()

修复/解决方法:

Module not found: Error: Can't resolve './path/to/assets.png'添加到您的css-loader中,这将禁用css-loader的网址处理:

?url=false

答案 2 :(得分:1)

这是css-loader 4.x中的重大更改(根据css-loader issue 1136)。

答案 3 :(得分:0)

我在其他答案中建议url-loaderfile-loader没有运气。我能够使用resolve-url-loader

解决它
module: {
  rules: [
    { // sass / scss loader for webpack
      test: /\.(sass|scss|svg|png|jpe?g)$/, //Make sure to allow all necessary file types here
      use: ExtractTextPlugin.extract({
        use: [
            {
              loader: 'css-loader',
              options: {
                importLoaders: 1,
                minimize: true,
                sourceMap: true
              }
            },
            {
              loader: 'postcss-loader',
              options: {
                sourceMap: true
              }
            },
            {
              loader: "resolve-url-loader", //resolve-url-loader needs to come *BEFORE* sass-loader
              options: {
                sourceMap: true
              }
            },
            {
              loader: "sass-loader",
              options: {
                sourceMap: true
              }
            }
        ]
      })
    }
  ],
},