我正在使用 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>
-标记,则需要确保它确实正确替换了基本网址。