在写Nodejs的过程中,经常会被各种路径所困扰,因为Require的模块机制,对于其底层可能有时并不会太清楚,这篇文章主要就是记录一些常用的目录的查询方法
process.cwd()
取当前工作目录(Current Work Directory),这个不同于“脚本所在目录”。如果你是通过命令行调用的,那么就应该是入口脚本的目录;如果是通过其他进程调用的会继承下来。
__dirname
获取当前文件所在的目录
path.resolve path.join
path.join
方法用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix
系统是”/“
,Windows
系统是”\“
。
path.resolve
方法用于将相对路径转为绝对路径。
它可以接受多个参数,依次表示所要进入的路径,直到将最后一个参数转为绝对路径。如果根据参数无法得到绝对路径,就以当前所在路径作为基准。除了根目录,该方法的返回值都不带尾部的斜杠。
// 格式
path.resolve([from ...], to)
// 实例
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
module.filename
其实,有的时候我们可能需要这样的奇怪的需求
- 我是谁(我的文件是什么)
- 我从何处来(谁调用的我)
对于这两个问题,上面的方法已经不能解决了,因为上面的方法返回的都是目录路径,但是我要具体到某个文件。
这个时候就需要用到module
了
在nodejs
的环境中,每个独立的文件都会有属于自己的module
,module
记录了文件的相关的信息,因此对于上面两个问题我们可以分别这么使用:
let myfilename = module.filename; // 获取当前文件的文件名的绝对路径
let patent = module.parent.parent.filename; // 获取调用当前文件的父节点