Node.js 几种获得正式绝对路径的方式

在项目中需要绝对路径去设置一些文件地址,于是搜索了一下,在这里大致总结一下:

console.log(__dirname);
console.log(__filename);
console.log(process.cwd());
console.log(path.resolve('./'));

我的项目路径为:/Users/SkyAo/Documents/Coding/JavaScript/Node.js/Connector,而运行的文件是在core文件夹中,然后执行项目路径下的index.js(其中引用了core目录中的appConfig.js

返回为:

/Users/SkyAo/Documents/Coding/JavaScript/Node.js/Connector/core
/Users/SkyAo/Documents/Coding/JavaScript/Node.js/Connector/core/appConfig.js
/Users/SkyAo/Documents/Coding/JavaScript/Node.js/Connector
/Users/SkyAo/Documents/Coding/JavaScript/Node.js/Connector

得到的返回值告诉我们:

  • __dirname返回的是执行的JavaScript文件。
  • __filename__dirname一样,返回的是执行的目标JavaScript文件。
  • process.cwd()返回的是项目的目录,也就是运行的JavaScript所在的目录,以下是官方解释。
process.cwd() Returns the current working directory of the process.
  • path.resolve('./')调用同process.cwd(),可以执行一系列路径操作后返回最终路径,官方说明如下:
Resolves to to an absolute path.
If to isn't already absolute from arguments are prepended in right to left order, until an absolute path is found. If after using all from paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory. Non-string from arguments are ignored.

以下样例,说明问题:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')

相当于:

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

区别是不同的路径可以是文件或者不存在。

当然,看手册的话,我们会发现Node Core中的path包还是相当强大的,今天就先介绍一下这个,当时我并不知道这么多种方法,是在项目目录把__dirname作为参数传入的。

最后,参考资料:

https://github.com/imsobear/blog/issues/48

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 知识, 语法, node.js

添加新评论