path模块-路径处理#
问题:Node.js代码中,相对路径是根据 终端所在路径 来查找的,可能无法找到想要的文件
例如,有这样的文件结构:
js>(test>003.js)+test.txt
,在003.js代码中,读取文件的路径写作
../test.txt
,这样就会出错
原因就是在Node.js运行时是按照终端所在的路径来查找
建议:在Node.js代码中,使用 绝对路径
补充:
__dirname
内置变量(获取当前模块目录-绝对路径)
- windows:D:\xxxx\xxxx\xxx\self_node\js
- mac:/Users/xxxx/xxx/self_node/js
注意:
path.join()
会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起
path.join('03','dist/js','index.js')
// windows: '03\dist\js\index.js'
// mac: '03/dist/js/index.js'
语法:
- 加载path模块
- 使用path.join方法,拼接路径
const path = require('path')
path.join('路径1','路径2',...)
实测#
文件结构不变,003.js如下
const fs = require('fs')
// 1.引入path模块对象
const path = require('path')
// 2.调用path.join()配合__dirname组成目标文件的绝对路径
const filePath = path.join(__dirname, '../test.txt')
fs.readFile(filePath, (err, data) => {
if (err) {
console.log(err)
} else {
console.log(data.toString())
}
})
结果如图: