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

Node.js中path.join忽略rootDir最后目录的问题求助

问题原因与解决方案

问题根源

你在path.js中错误使用了path.dirname(require.main.path):

  • require.main.path已经返回了项目根目录C:\Users\HP\Desktop\Nodejs\sec-5
  • path.dirname()的作用是获取传入路径的父目录,执行后rootDir变成了C:\Users\HP\Desktop\Nodejs,因此拼接路径时丢失了sec-5目录

修复方案

方案1:直接导出require.main.path

修改path.js代码,去掉多余的path.dirname():

const path = require("path");
console.log("path.js : 2", require.main.path);
module.exports = require.main.path; // 直接导出根目录路径

方案2:用__dirname构建根目录(更稳定)

如果担心require.main在子进程、模块被作为依赖引入等场景下的不确定性,可以通过当前文件路径反向推导根目录:

const path = require("path");
// path.js在utils目录下,根目录是utils的上上级目录
module.exports = path.resolve(__dirname, "../..");
// 也可以用嵌套dirname:module.exports = path.dirname(path.dirname(__dirname));

验证效果

修改后,rootDir会正确指向C:\Users\HP\Desktop\Nodejs\sec-5,执行path.join(rootDir, "views", "shop.html")将得到预期路径:
C:\Users\HP\Desktop\Nodejs\sec-5\views\shop.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:25:00