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

Mac环境下Node.js require路径疑问:/Public与./为何表现不同?

为什么require('/Public/todoController')无法正常工作?

这个问题其实是Node.js模块加载机制里一个非常容易踩的坑,我来给你讲明白其中的门道:

首先得搞清楚Node.js里require路径的两种核心类型:

  • 相对路径(以.或..开头):比如你用的require('./todoController'),这种路径的解析基准是当前执行脚本所在的目录(也就是你的app.js所在的Public文件夹),所以它会正确找到同目录下的todoController.js,完全没问题。
  • 绝对路径(以/开头):而require('/Public/todoController')里的/,指的是你的Mac系统的根目录(就是Finder里的“Macintosh HD”根目录),而不是你项目的根目录!也就是说Node.js会去/Public/todoController.js这个位置找文件,但你的文件其实在你的项目根目录/Public/todoController.js,这俩根本不是同一个地方,自然就找不到文件了。

如果想基于项目根目录来加载模块,你可以试试这些办法:

  • 用__dirname或者process.cwd()来拼接路径,比如require(path.join(process.cwd(), 'Public/todoController'))(记得先const path = require('path'))
  • 可以设置NODE_PATH环境变量指向你的项目根目录,这样Node.js会在这个路径下查找模块
  • 或者使用第三方包(比如app-root-path)来方便地获取项目根路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:05:45