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

Express项目静态资源加载失败,持续报404错误求助

问题排查与解决方案

你的问题出在静态资源的路径配置和引用方式上,以下是具体的修复步骤:

1. 修正Express静态文件中间件的路径

你当前用app.use(express.static("public"))是相对脚本启动路径的相对路径,而从res.sendFile的../index.html可以看出,你的HTML文件在脚本目录的上级,所以public目录大概率也在上级目录,应该用绝对路径来定位public,避免路径歧义:

// 替换原来的静态中间件配置
app.use(express.static(path.join(__dirname, "../public")));

2. 调整HTML中的资源引用路径

当你访问/war这类路由时,浏览器会把./index.js解析成/war/index.js,而不是根目录下的静态资源。所以要把资源路径改成根路径开头(以/开头),直接指向public目录下的文件:

<!-- 修正图片路径 -->
<img src="/assets/images/cards/black_joker.png" height="300px" id="p1Card">
<img src="/assets/images/cards/red_joker.png" height="300px" id="p2Card">

<!-- 修正JS文件路径 -->
<script src="/index.js"></script>

3. 确认目录结构正确性

确保你的项目目录结构符合以下逻辑(关键是静态资源要放在public目录内):

项目根目录/
├── public/
│   ├── assets/
│   │   └── images/
│   │       └── cards/
│   │           ├── black_joker.png
│   │           └── red_joker.png
│   └── index.js
├── 你的脚本目录/ (比如src/)
│   ├── 你的路由文件.js
│   └── server.js
├── index.html
├── start.html
└── finalScore.html

完成以上三步后,重启服务,静态资源应该就能正常加载了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:55:21