Node.js中几种文件路径的区别

在Node.js中我们常用的几种文件路径有以下几种

  • __dirname
  • __filename
  • process.cwd()
  • ./或者../

在下面的测试中为了便于比较,我们将./或者../这两个相对路径用path.resolve()转换成与前边几种一样的绝对路径,来看看几者的区别.

首先看看我们测试文件的目录结构

Node.js中几种文件路径的区别_第1张图片
目录结构

现在我们在a.js中写入如下代码

var path = require('path');

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

cd 到public目录下运行node a.js,看一下运行结果

Node.js中几种文件路径的区别_第2张图片
运行结果1

这样子看来,除了__filename是当前js文件的绝对路径,其他都是当前文件所在目录的绝对路径.
现在我们在demo-test目录下,运行node public/a.js,再看看结果是什么

运行结果2

这个时候就能看出一点问题了
__dirname:总是会返回当前文件所在目录的绝对路径
__filename:当前文件的绝对路径

目前看来process.cwd()./两次运行结果都是一样的,返回的是运行 node 命令时所在的文件夹的绝对路径.
但其实还有一种特殊情况,就是在require中使用./,这个时候它和__dirname是一样的不会因为运行node所在的目录变化而变化,其他情况下都和process.cwd()一样返回运行node命令时所在的文件夹的绝对路径.

你可能感兴趣的:(Node.js中几种文件路径的区别)