Webpack - sass loader无法找到图像

时间:2015-11-28 09:41:58

标签: javascript css node.js webpack sass-loader

sass loader doc说:"If you're just generating CSS without passing it to the css-loader, it must be relative to your web root"。 所以我按照它说的做了,我的index.html中有project root,然后我正在尝试从image文件中加载scss。 现在我有2个错误:1)来自Chrome's consoleCannot find module "./img/header.jpg"。 2)来自我的terminal

ERROR in ./~/css-loader!./~/sass-loader!./~/resolve-url-loader!./public/css/header.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ./img/header.jpg in C:\Web-Development\React\Portfolio\public\css
 @ ./~/css-loader!./~/sass-loader!./~/resolve-url-loader!./public/css/header.scss 6:64-91

webpack.config.js

module.exports = {
    entry: './main.jsx',
    output: {
        filename: './public/js/build/bundle.js'
    },
    module: {
        loaders: [
            {
              test: /\.jsx?$/,
              exclude: /(node_modules|bower_components)/,
              loader: 'babel',
              query: {
                  presets: ['react', 'es2015']
              }
          },
          {
              test: /\.scss$/,
              loaders: ["style", "css", "sass", "resolve-url"]
          },
          {
            test: /\.jpg$/,
            loader: "file?name=[path][name].[ext]"
          }
        ]
    }
};

如果我看到我的代码,我可以清楚地看到我的css位于<head>内,所以我已经将我的图像路径指向我的根,正如文档所述,但仍然无法修复它。

更新 我安装了file-loader并按照说明操作,现在我在控制台中收到此错误:GET http://localhost:3000/public/img/header.jpg 404 (Not Found) - jquery.js:9119

3 个答案:

答案 0 :(得分:6)

据我所知,你实际上正在使用css加载器("style", "css", "sass", "resolve-url")(&#34; css&#34;部分是&#34; css-loader&#34;)

在你的sass文件中,你应该使用你正在编辑的sass文件的相对路径链接到图像。

styles
 - somefile.scss
 - another.scss
images
 - someImage.jpg
在somefile.scss中

,你应该链接到你的图像:

background-image: url("../images/someImage.jpg);

请注意,如果您希望webpack将这些图像移动到您的分发文件夹(如果您使用的是这样的系统),则需要file-loader之类的内容来复制这些文件。

答案 1 :(得分:1)

如果您的图片已经在您需要的地方,则可以使用ignore-loader。 file-loader会将文件复制到输出文件夹。

答案 2 :(得分:1)

为了解决这个问题,我已经上传了这个webpack extremly basic configuration来启动我的项目,我希望它可以帮助每个遇到这个问题的人。当然,建议都是受欢迎的。