如何使用 Node.js 的 path 模块来处理文件路径?

(1)path 模块概述

path 模块是 Node.js 内置模块,提供了处理和转换文件路径的实用工具,可解决不同操作系统路径分隔符不同等问题。

(2)不同操作系统路径差异

Windows 使用反斜杠 \ 作为路径分隔符,而 Unix-like 系统(如 Linux、macOS)使用正斜杠 /。path 模块能自动处理这些差异。

path.parse() 方法将路径解析为一个对象,包含根目录、目录名、文件名、扩展名等信息。

path.resolve vs path.join 的区别

  • path.resolve() 方法将路径或路径片段的序列解析为绝对路径。给定的路径序列会从右到左进行处理,后面的每个 path 会被追加到前面,直到构造出绝对路径。
  • path.join() 方法会将所有给定的 path 片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径。

来源整理自:vue3js.cn 面试官系列

补充

补充:常用 API 与示例。

const path = require('node:path');

// path.parse / path.format:路径与对象互转
const parsed = path.parse('/foo/bar/index.js');
// { root: '/', dir: '/foo/bar', base: 'index.js', ext: '.js', name: 'index' }

// path.join:拼接并自动规范化,保留相对路径
path.join('/foo', 'bar', 'baz/../qux'); // '/foo/bar/qux'(不解析为绝对路径)

// path.resolve:从右向左拼接,遇到绝对路径即停,未传参时返回当前工作目录
path.resolve('a', '/b', 'c'); // '/b/c'
path.resolve(); // process.cwd()

// __dirname 与 path 配合:构造跨平台文件路径
const filePath = path.join(__dirname, 'config', 'app.json');

实践建议:

  • 业务代码中所有路径操作都应通过 path 模块,避免直接拼接 / 或 \。
  • ESM 中同样可以用 import path from 'node:path'。