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

Node.js Express项目中如何定位上级目录以读取指定文件?

问题原因

  • __dirname 是当前执行脚本所在的目录路径,末尾不会自动携带路径分隔符/,直接拼接../client-side/public/index.html会生成非法无效路径。举个例子,如果你的服务端代码存放在项目根目录下的server文件夹中,__dirname 的值为/你的项目路径/server,直接拼接后得到的路径是/你的项目路径/server../client-side/public/index.html,系统无法识别该路径。
  • 手动拼接路径存在跨操作系统兼容问题,Windows和类Unix系统的路径分隔符规则不同,手动写斜杠容易引发异常。

修复方案

首先引入Node.js内置的path模块,该模块会自动适配不同操作系统的路径规则:

const path = require('path');

修改你的路由代码,使用path.join方法拼接路径即可正常访问目标文件:

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, '../client-side/public/index.html'));
});

拓展优化

如果你需要托管public目录下的所有静态资源(包括css、js、图片等),更推荐使用express内置的静态资源托管中间件,配置后访问根路径会自动返回目录下的index.html,无需单独写对应路由:

app.use(express.static(path.join(__dirname, '../client-side/public')))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:30:05