一.文件操作中的路径
1.文件操作中的相对路径可以省略 ./
./a.js 相对于当前路径
a.js 相对于当前路径
/a.js 绝对路径,当前文件所在磁盘根目录
let fs = require('fs')
fs.readFile('./a.js',function(){
})
fs.readFile('a.js',function(){
})
2.文件操作中的相对路径是相对于执行node命令所在的路径
文件操作中的相对路径不是相对于当前文件所在路径,而是是相对于执行node命令所在的路径
在a 目录下执行 node data/b.js,则文件操作中的相对路径是相对于 a/,所以b.js中的读取文件的相对路径为 ./data/c.js ,而不是 c.js
为了解决不同层级文件中执行node会引起的文件操作中相对路径出错的问题,
引入 path模块
let path = require('path')
node环境中,引入path模块,模块内除了require 和 exports 对象之外,还有
__dirname 和 __filename
- 动态的 获取当前文件或者文件所处目录的绝对路径
- 用来解决文件操作路劲的相对路径问题
- 因为在文件操作中,相对路径相对于执行
node
命令所处的目录 - 所以为了尽量避免这个问题,都建议文件操作的相对路劲都转为:动态的绝对路径
- 方式:
path.join(__dirname, '文件名')
// 文件 index.js
let path = require('path')
console.log(__dirname)
console.log(__filename)
二.模块操作中的路径问题
1.模块操作中./不能省略
let a = require('./a')
在模块加载中,相对路径的 ./ 不能省略
./a.js 相对于当前目录的路径
/a.js 绝对路径,文件所处磁盘根目录
a.js 报错(会认为a是核心模块或者第三方模块)