被nodejs里的路径给搞醉了
发布于 10 年前 作者 SFLAQiu 33971 次浏览 最后一次编辑是 8 年前 来自 问答

1.png

问题1:想让调用的时候都从一个目录下找这个config.xml,在不写死绝对对路径的情况下(如:D:/config/config.xml),要怎么写这个路径? 问题2:express web 项目中写了个功能模块,在不同的文件路径下require就需要些不同的相对路径: 如:require(’…/my_helper/redis-helper’); require(’…/…/my_helper/redis-helper’); 能不能写成相对项目根目录的 asp.net中可以’/my_helper/redis-helper’ 这样,就是根据web项目更目录下找,nodejs 要怎么写?

8 回复

1,fs 的相对路径从项目根目录开始 eg: fs.readFileSync(‘config/config.xml’); (project_root_path/config/config.xml)做了点测试,个别情况下还是以第二条为准 2,require的相对路径从当前文件开始 比如同一目录下用reuqire(’./xxx’) or require(’./xxx.js’) or require(’./xxx.json’);上级目录用(’…/xxx’)的相对路径

@dayuoba 上级目录是两个点,步子到为什么打两个点显示3个点

另外,只有 require 的路径是相对当前文件,其他大部分函数接收的路径都是相对于「当前工作目录」即程序运行时的 cwd

你需要先获得当前文件所在的目录然后拼接路径

我觉得 在 应用的入口文件 用 __dirname 定义一个应用根目录的全局变量 比如 APP_PATH 之后 所有的文件都用这个 变量定义目录 比如 APP_PATH+’/config/config.xml’ 这样 全部使用了绝对路径不会乱

根路径可以用process.cwd()获取,当然项目启动文件要在根目录下, 然后可以用path.join()进行拼接, 如下

path.join(process.cwd(), '/config/config.xml')
回到顶部