dirname 与 './' 的区别
nodejs 中__dirname
总是指向被执行 js 文件的绝对路径目录,在各个被引用的 js 中,__dirname
也是不同的,因为它们都指向自身文件的绝对路径目录。
./
则指向执行 node 命令的路径目录,在各个被引用的 js 中 path.resolve('./')
的输出都是一样的,都是指向命令行执行的目录。
举例: 项目的目录结构如下:
my-project/
├── scripts/
│ ├── index.js
│ ├── utils/
│ │ └── getEnv.js
- index.js
- 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)}`);
my-project/scripts/utils/getEnv.js
const path = require('path');
module.exports = {
dirname: __dirname,
slash: path.resolve('./'),
};
打开 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"}