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

Express应用中无法通过URL访问静态文件的问题排查

问题原因及解决方案

你遇到的Cannot GET错误,核心问题是静态文件目录路径拼接错误。

具体问题点

在你的代码中:

app.use(express.static(__dirname + "public"));

__dirname变量返回当前文件(index.js)所在的目录路径,它不会以斜杠结尾。直接和"public"拼接后,最终路径会变成类似/xxx/express-apppublic(把express-app和public连在一起了),Express找不到这个目录,自然无法加载静态文件。

修正方案

有两种可靠的写法:

  1. 手动添加路径分隔符:
app.use(express.static(__dirname + "/public"));
  1. 使用Node.js内置的path模块拼接路径(推荐,跨系统兼容,自动适配Windows和Linux的路径分隔符):
const express = require("express");
const path = require("path"); // 引入path模块
const app = express();

// 用path.join拼接正确路径
app.use(express.static(path.join(__dirname, "public")));

app.get("/", (req, res) => {
  res.json({ message: "Hello World!" });
});

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

修正后重启服务,访问http://localhost:3000/demo.html或http://localhost:3000/image.jpg就能正常加载静态文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:00:42