You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从零搭建Webpack项目,HTML引入图片出现404错误求助

解决Webpack项目中HTML图片引入404的问题

你遇到的核心问题是Webpack没有处理HTML中的图片路径,再加上当前配置里的小细节问题,导致图片加载失败。我帮你一步步梳理解决方案:

1. 先修正Webpack Output的配置错误

你的output.filename配置有问题,filename: "src/assets/js/index.[hash:8].js"会让Webpack在build文件夹下额外创建src/assets/js目录来存放打包后的JS,这会打乱输出结构,还会影响资源路径解析。建议改成:

output: {
    filename: "js/index.[hash:8].js", // 直接指定输出到build/js目录
    path: path.join(__dirname, 'build')
},

2. 让Webpack能处理HTML中的图片依赖

Webpack默认只会从entry入口解析JS/CSS里的资源依赖,HTML里的<img>路径不会被自动处理。你需要安装并配置html-webpack-plugin来解决这个问题:

第一步:安装插件

npm install html-webpack-plugin --save-dev

第二步:在Webpack配置中引入并配置插件

在配置文件顶部添加:

const HtmlWebpackPlugin = require('html-webpack-plugin');

然后在配置里新增plugins数组(如果已有就直接加进去):

plugins: [
    new MiniCssExtractPlugin({
        filename: "css/styles.[hash:8].css" // 顺便修正CSS输出路径,和JS保持统一结构
    }),
    new HtmlWebpackPlugin({
        template: './src/index.html', // 你的源HTML文件路径
        filename: 'index.html' // 输出到build目录下的HTML文件名
    })
]

3. 调整HTML中的图片引入路径

用了html-webpack-plugin后,Webpack会帮你解析图片路径,所以要把图片路径改成相对于JS入口文件的路径,或者项目根目录的相对路径。假设你的源图片放在src/assets/img/logo-texte.png,HTML里应该写成:

<section class="header">
    <h1><img src='./assets/img/logo-texte.png' alt="Le Grand Dressing"/></h1>
</section>

如果是模块化开发,更推荐在JS中引入图片再动态插入:

// 在index.js中
import logo from '../img/logo-texte.png';

const headerImg = document.querySelector('.header h1 img');
headerImg.src = logo;

4. 优化File-loader的配置

你的file-loader配置基本没问题,可以把publicPath改成绝对路径(相对于build目录),避免路径层级混乱:

{
    test: /\.(png|svg|jpg|gif)$/,
    use: [
        { loader: 'file-loader', options: { publicPath: '/img/', outputPath: 'img' } }
    ]
},

最后别忘了重启webpack-dev-server,让所有配置生效。这样处理后,Webpack会正确把图片复制到build/img目录,同时替换HTML里的图片路径为打包后的正确路径,404问题就能解决了。

内容的提问来源于stack exchange,提问作者Bernabez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 10:22:48