Webpack 和 Sass 可以正确处理 background: url() 图像,但在与 webpack-dev-server 一起使用时找不到它



我正在使用 Webpack 2 和 webpack-dev-server 以及 Sass loader,实际配置:

{
    test: /.scss/,
    loaders: [
        "style",
        { loader: "css", query: { modules: false, sourceMap: true } },
        { loader: "resolve-url" },
        { loader: "sass", query: { sourceMap: true } }
    ]
}

这工作得很好,background: url()中引用的图像由 webpack 处理,并且还以样式替换了类似 background-somehash.jpg 的东西,可以通过键入 http://localhost:8080/background-somehash.jpg 来访问该文件。当我使用开发人员工具在样式背景定义中提供整个 url(包括本地主机(时,它也可以工作......

唯一不起作用的是 webpack 生成的原始 css,它看起来像background: url(background-somehash.jpg)。我还尝试了各种网址,如./../../.././images/,以尝试根是否以某种方式设置不同。我没有得到的是该文件在根目录很容易获得......

编辑:当与将样式提取到单独的真实styles.css文件中的extract-text-webpack-plugin一起使用时,它可以正常工作。问题是为什么当从javascript包提供最终css时它不起作用?

澄清:一切都被正确引用,图像可用,当我使用 extract-text-webpack-plugin 将 css 提取到单独的文件中时,它都可以工作,当从bundle.js提供完全相同的 css 然后以index.html引用

时,它不起作用,就像<link href="blob:..." rel="stylesheet">

你应该检查的事情:

引用的图像是否被 webpack 识别?

只需删除映像并检查 webpack 构建是否失败。如果是这种情况,则不是加载程序配置的问题。

使用浏览器开发人员工具检查请求的 URL

如果请求以 404 终止:

  • 检查output.publicPath(webpack(/contentBase(webpack-dev-server(是否指向同一位置。这是从浏览器的角度来看(=没有绝对文件路径(

  • 如果您使用的是 <base> -标记,则需要确保它确实正确替换了基本网址。

最新更新