在 Node.js 中从相对路径获取文件的绝对路径
Get absolute path of file from relative path in Node.js
使用该path.resolve()
方法从 Node.js 中的相对路径获取文件的绝对路径,例如path.resolve('./some-file.js')
.
该resolve()
方法会将提供的相对路径解析为绝对路径。
索引.js
const {resolve} = require('path'); // 👇️ if using ES6 Modules syntax // import { resolve } from 'path'; const absolutePath = resolve('./another-file.js'); // 👇️ "/home/borislav/Desktop/bobbyhadz-js/another-file" console.log(absolutePath);
path.resolve方法采用一个或多个路径段并将它们解析为绝对路径。
如果您在调用该resolve()
方法时未向其传递参数,或向其传递空字符串,它将返回当前工作目录的绝对路径。
索引.js
const {resolve} = require('path'); // 👇️ if using ES6 Modules syntax // import { resolve } from 'path'; const absolutePath = resolve(''); // 👇️ "/home/borislav/Desktop/bobbyhadz-js" console.log(absolutePath);
您还可以在指定相对路径时上移目录。
索引.ts
const {resolve} = require('path'); // 👇️ if using ES6 Modules syntax // import { resolve } from 'path'; const absolutePath = resolve('../aws-cli.txt'); // 👇️ "/home/borislav/Desktop/aws-cli.txt" console.log(absolutePath);
您还可以将多个参数传递给该resolve()
方法。
索引.js
const {resolve} = require('path'); // 👇️ if using ES6 Modules syntax // import { resolve } from 'path'; // 👇️ /foo/bar/baz console.log(resolve('/foo/bar', './baz')); // 👇️ /baz console.log(resolve('/foo/bar', '/baz'));
您可能还会看到使用了__dirname
和变量。__filename
索引.ts
// 👇️ "/home/borislav/Desktop/bobbyhadz-js" console.log(__dirname); // 👇️ "/home/borislav/Desktop/bobbyhadz-js/index.js" console.log(__filename);
该__dirname
变量返回当前模块的目录名称。
例如,如果您__dirname
在位于 的模块中使用该变量
/home/user/my-module.js
,则该__dirname
变量将返回/home/user
。
该__filename
变量返回当前模块的绝对路径。
因此,如果您__filename
在位于 的模块中使用该变量
/home/user/my-module.js
,该__filename
变量将返回
/home/user/my-module.js
。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: