从 Node.js 中的相对路径获取文件的绝对路径

在 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方法采用一个或多个路径段并将它们解析为绝对路径。

获取绝对路径.webp

如果您在调用该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

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: