Node.js path 模块的常用方法有哪些?__dirname 和 __filename 的区别?
请说明 Node.js path 模块的常见方法以及 __dirname 和 __filename 的用途。
回答
专业代码师
path 模块:用于处理和转换文件路径的工具模块。
常用方法:
const path = require('path');
// 路径拼接(自动处理分隔符)
path.join('/usr', 'local', 'bin'); // '/usr/local/bin'(POSIX)
path.join('usr', '..', 'local'); // 'local'(.. 回退)
// 解析绝对路径
path.resolve('src', 'app.js'); // '/current/dir/src/app.js'
path.resolve('/etc', 'app.conf'); // '/etc/app.conf'
// 路径信息
path.basename('/foo/bar/baz.txt'); // 'baz.txt'
path.dirname('/foo/bar/baz.txt'); // '/foo/bar'
path.extname('/foo/bar/baz.txt'); // '.txt'
// 解析路径对象
path.parse('/home/user/file.txt');
// { root: '/', dir: '/home/user', base: 'file.txt', ext: '.txt', name: 'file' }
// 格式化路径对象
path.format({ dir: '/home/user', base: 'file.txt' }); // '/home/user/file.txt'
// 路径分隔符
path.sep; // POSIX: '/', Windows: '\\'
__dirname 和 __filename:
__dirname:当前模块的目录名(绝对路径)__filename:当前模块的文件名(绝对路径,含扩展名)
console.log(__dirname); // 例如: /home/user/project/src
console.log(__filename); // 例如: /home/user/project/src/index.js
注意:
- 在 ES Module 中,
__dirname和__filename不可用,需用import.meta.url和fileURLToPath模拟
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);