【webpack脱坑指南】打包之后css中资源文件路径不正确

本文详细介绍了在使用Webpack进行项目打包时,遇到的layer组件资源文件路径丢失问题及解决方法。阐述了output.publicPath配置的重要性,以及如何正确设置以确保资源文件如图片能够被正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bug描述

项目中使用了 layer,在执行 webpack 打包编译之后,layer.css 文件中用到的资源文件路径找不到,导致放大和关闭图标无法在页面上正常显示。
不能正确显示放大和关闭图标

原因:(来自官方文档)

对于按需加载(on-demand-load)或加载外部资源(external resources)(如图片、文件等)来说,output.publicPath 是很重要的选项。如果指定了一个错误的值,则在加载这些资源时会收到 404 错误。

就是说:当你 require 了一些第三方插件或者网络资源,并且这些资源中包含 uri 属性,比如 css 中的 background:url(./icon.png) no-repeat},那就要使用output.publicPath,否则就会找不到该路径。当然,如果这些资源中不包含 uri,那这个属性就没用。

解决方法

在配置项内加入 publicPath 属性,设置为部署时的绝对路径。
比如:我的页面通过如下url 方式让用户访问

http://xx.xx.xx.xx:9627/client/webapp/images/icon-551539f873d9ebe0792b120a9867d399.png

那么 pubilcPath 的值就应该是 ‘/client/webapp/images/’,也就是部署接口地址。

{
                test: /\.(png|svg|jpg|gif)$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        outputPath: 'images',
                        name: '[name]-[hash].[ext]',
                        publicPath:"/client/webapp/images/"   
                    }
                }
            },

这样做之后,webpack打包时还会将图片复制到 /images 路径下,但是它还会把 css 文件中的 background url 改写为 publicPath + name .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值