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

如何在Express中从服务器文件夹上级目录提供HTML文件?

解决Express服务器访问上级目录HTML文件的问题

你的问题出在__dirname指向的是当前服务器脚本所在的/server目录,拼接/index.html后会去/server/index.html查找文件,但实际index.html存放在上级的Project-Directory目录里。下面是几种可靠的解决方法:

方法1:用相对路径跳转上级目录

直接在路径中加入../表示向上一级目录,修改app.get回调即可:

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/../index.html');
})

方法2:使用Node.js的path模块(推荐,跨平台兼容)

path模块能自动处理不同操作系统的路径分隔符,避免路径适配问题。先引入模块,再用path.resolve构建正确的绝对路径:

const express = require('express');
const path = require('path'); // 引入path模块

const app = express();
app.use(express.json());

app.get('/', (req, res) => {
  // __dirname指向/server目录,../跳转到上级的Project-Directory
  res.sendFile(path.resolve(__dirname, '../index.html'));
})

const port = 5000;
app.listen(port, () => console.log(`Server is listening on port ${port}.`))

方法3:配置静态文件目录(适合多静态资源场景)

如果项目主目录下还有CSS、JS等其他静态文件,可以直接把上级目录设为静态资源目录,Express会自动在该目录下查找文件:

const express = require('express');
const path = require('path');

const app = express();
app.use(express.json());
// 将上级目录设置为静态资源根目录
app.use(express.static(path.resolve(__dirname, '../')));

// 此时访问根路径会自动返回index.html,无需额外编写get路由
const port = 5000;
app.listen(port, () => console.log(`Server is listening on port ${port}.`))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:48:16