Node.js path.resolve

devtools/2025/1/18 5:29:46/

path.resolve 是 Node.js 中的 path 模块提供的一个方法,用于解析文件路径。它会根据传入的路径参数,结合当前工作目录(process.cwd())以及给定的路径参数,计算出一个绝对路径。

语法

const path = require('path');
path.resolve([from ...], to)

参数

  • from(可选):一个或多个路径字符串,作为路径解析的起始点。如果没有传入,path.resolve 会以当前工作目录(process.cwd())为起始点。
  • to:目标路径,它会被解析成绝对路径。

path.resolve 会将多个路径参数解析为一个绝对路径。如果路径参数没有以 / 或 \(Windows 中的路径分隔符)开头,它会被认为是相对路径。它会按顺序从右向左处理路径,直到构建出一个绝对路径。

工作原理

  1. 如果路径已经是一个绝对路径,那么 path.resolve 会直接返回它。
  2. 如果路径是相对路径,它会和当前工作目录(process.cwd())拼接,直到形成一个绝对路径。
  3. 如果有多个路径参数,它会从右往左逐一解析,每一个非绝对路径会被当作相对路径拼接在前一个路径后。

示例

示例 1:传入相对路径
const path = require('path');// 假设当前工作目录是 '/home/user/project'
console.log(path.resolve('folder', 'file.txt'));
// 输出:'/home/user/project/folder/file.txt'

解释:这里的 path.resolve(‘folder’, ‘file.txt’) 会将相对路径 folder/file.txt 拼接到当前工作目录 /home/user/project 上,生成一个绝对路径。

示例 2:传入绝对路径
const path = require('path');// 假设当前工作目录是 '/home/user/project'
console.log(path.resolve('/folder', 'file.txt'));
// 输出:'/folder/file.txt'

解释:由于 ‘/folder’ 是绝对路径,因此 path.resolve 会直接返回 ‘/folder/file.txt’,忽略了后面的路径。

示例 3:多个路径参数
const path = require('path');// 假设当前工作目录是 '/home/user/project'
console.log(path.resolve('folder', '/subfolder', 'file.txt'));
// 输出:'/subfolder/file.txt'

解释:path.resolve 会从右往左依次解析,/subfolder 是绝对路径,所以忽略了前面的相对路径 folder,最终得到 /subfolder/file.txt。

示例 4:没有传递路径
const path = require('path');// 假设当前工作目录是 '/home/user/project'
console.log(path.resolve());
// 输出:'/home/user/project'

解释:如果没有传递任何路径,path.resolve 会返回当前工作目录(process.cwd())。

示例 5:路径包含 … 和 .(相对路径符号)
const path = require('path');// 假设当前工作目录是 '/home/user/project'
console.log(path.resolve('folder', '..', 'file.txt'));
// 输出:'/home/user/project/file.txt'

解释:… 表示上一级目录,因此 folder/… 会回到 /home/user/project,然后拼接上 file.txt。

总结

  • path.resolve 用于计算并返回一个绝对路径。
  • 它会将传入的路径逐一解析,如果遇到绝对路径会返回它,遇到相对路径会与当前工作目录进行拼接。
  • 适用于文件路径的标准化和解析,特别是在处理跨平台路径时非常有用。

http://www.ppmy.cn/devtools/151479.html

相关文章

单芯片控制多个高性能伺服电机

在我上学的时候,STM32FPGA的架构是论文或者研究的一个热点。直到Xilinx的ZYNQ和Altera的Cyclone V 出现大家才把研究的重点放到ZYNQ上,但是ZYNQ等架构成本较高及PS或者HPS端通常需要DDR,板子较大,同样的功耗也不低。从这几方面来说…

拆分工作簿转换PDF格式文件一步到位-Excel易用宝

今天一大早老板急匆匆的跑进办公室说,快快快,,快把这个工作簿中的工作表拆分出来,然后转换成PDF格式文件发给客户。 我一看这么多工作表,又是拆分表格,又是转换文件,这么复杂的工作&#xff0c…

[0242-06].第06节:SpringBoot对SpringMVC的自动配置

SpringBoot学习大纲 一、搭建web项目环境: 1.1.基于SpringBoot搭建Web工程: a.创建SpringBoot项目 b.选中依赖:选中我们所需要的模块 1.2.SSM中的WEB开发配置与SpringBoot中WEB开发自动配置对比: 1.在SSM 整合时,需…

【Rust自学】12.6. 使用TDD(测试驱动开发)开发库功能

12.6.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步: 接收命令行参数读取…

从漏洞管理到暴露管理:网络安全的新方向

在网络安全的快速发展中,传统的漏洞管理仍然是防御体系的基石。然而,面对日益复杂的威胁和不断增长的漏洞数量,单靠漏洞优先级评分(如VPR)已经无法满足现代安全需求。暴露管理这一全新的思维模式正在引领企业从被动应对…

MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2700人左右 1 …

干货答疑分享记录:as导入问题,LSP含义,分屏进入SplashScreen

背景: vip学员群经常会有学员遇到一些常见的android framework开发问题,近期收集整理一些疑问,主要有以下3个: 1、android studio对源码进行导入时候,老是无法跳转到系统source code 2、学员在群里询问dumpOtherPro…

如何优化Elasticsearch大文档查询?

记录一次业务复杂场景下DSL优化的过程 背景 B端商城业务有一个场景就是客户可见的产品列表是需要N多闸口及各种其它逻辑组合过滤的,各种闸口数据及产品数据都是存储在ES的(有的是独立索引,有的是作为产品属性存储在产品文档上)。 在实际使用的过程中&a…