Skip to main content

dirname 与 './' 的区别

nodejs 中__dirname总是指向被执行 js 文件的绝对路径目录,在各个被引用的 js 中,__dirname也是不同的,因为它们都指向自身文件的绝对路径目录。

./则指向执行 node 命令的路径目录,在各个被引用的 js 中 path.resolve('./')的输出都是一样的,都是指向命令行执行的目录

举例: 项目的目录结构如下:

my-project/
├── scripts/
│ ├── index.js
│ ├── utils/
│ │ └── getEnv.js
my-project/scripts/index.js
const path = require('path');
const env = require('./utils/getEnv');

console.log(`dirname:${__dirname}`);
console.log(`slash: ${path.resolve('./')}`);

console.log(`env: ${JSON.stringify(env)}`);

打开 Terminal 并 cd 到 my-project 目录下,执行 node scripts/index.js,输出如下:

输出

dirname:/Users/daichangxin/workspace/my-project/scripts
slash: /Users/daichangxin/workspace/my-project
env: {"dirname":"/Users/daichangxin/workspace/my-project/scripts/utils","slash":"/Users/daichangxin/workspace/my-project"}