【Node.js】path

本文讲述了Node.js中执行JS代码时,由于默认查找相对路径可能导致的问题。作者建议使用绝对路径并通过`__dirname`和`path`模块的函数如`path.join()`来正确加载文件。还介绍了path模块常用的方法,如basename,dirname,extname,resolve,parse和format等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径

先来看一个小例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 问题原因:就是从代码文件夹出发,使用../text.txt解析路径,找不到目标文件,报错了!

  2. 解决方案:使用模块内置变量 __dirname配合 path.join() 来得到绝对路径使用

    const fs = require('fs')
    console.log(__dirname) // D:\备课代码\2_node_3天\Node_代码\Day01_Node.js入门\代码\03
    
    // 1. 加载 path 模块
    const path = require('path')
    // 2. 使用 path.join() 来拼接路径
    const pathStr = path.join(__dirname, '..', 'text.txt')
    console.log(pathStr)
    
    fs.readFile(pathStr, (err, data) => {
      if (err) console.log(err)
      else console.log(data.toString())
    })
    
  3. 再次执行查看问题就被修复了!以后在 Node.js 要执行的 JS 代码中访问其他文件的路径,都建议使用绝对路径。


path 模块常用方法

const path = require('node:path')

//工作目录:C:\Users\86139\Desktop\nodee
//1. basename 返回当前文件名 windows兼容正斜杠(当写反斜杠的时候需要转移)
// console.log(path.basename('/foo/bar/text.html'))// text.html
//2. dirname 返回除去改文件名的路径
// console.log(path.dirname('/foo/bar/text.html')) // /foo/bar
//3. extname 返回文件扩展名 .html
// console.log(path.extname('/foo/bar/text.html')) // .html
//4. .join 路径拼接
// console.log(path.join('/foo/bar/text.html','../')) // \foo\bar\
//5. .resolve 解析路径
// console.log(path.resolve('/aaa','/bbb','/ccc')) // C:\ccc
// console.log(path.resolve(__dirname,'./ccc')) // C:\Users\86139\Desktop\nodee\ccc
// console.log(path.resolve('./ccc')) // C:\Users\86139\Desktop\nodee\ccc
//6. .parse 和 .format
console.log(path.parse('/home/user/dir/file.txt'))
/*{
    root: '/',
        dir: '/home/user/dir',
    base: 'file.txt',
    ext: '.txt',
    name: 'file'
}*/
// 而 .format 刚好为反向操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秀秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值