node中我们可以使用相对路径,那为什么要用__dirname
这个变量来找绝对路径呢???
下面的代码中给大家演示一个小例子:
文件操作 fileOperate.js
// fileOperate.js
const fs = require('fs');
console.log(__dirname);
console.log(__filename);
fs.readFile('../calc.js','utf8',(err,content)=>{
if(err) throw err;
console.log(content);
})
将fileOperate.js 载入 testModule.js
// testModule.js
const testModule = require('./modules/fileOperate.js');
运行 testModule.js
运行结果
文档结构:
文档结构
我们发现一个很奇怪的现象:console.log()打印出来的结果是对的,但是fs模块读文件的时候相对路径是错的,这是为啥呢???
原来fs.readFile()读文件时,文件路径是以入口文件为基准,在此基础上取相对路径
例子里面,入口文件是testModul.js,所以取相对路径就是错的了。
为了防止这种问题发生(项目开发过程中我们可能会把testModule.js 文件移动到任何地方),fs文件操作都取被操作文件的绝对路径。
所以fileOperate.js 文件应该改为
const fs = require('fs');
console.log(__dirname);
console.log(__filename);
fs.readFile(`${__dirname}/../calc.js`,'utf8',(err,content)=>{
if(err) throw err;
console.log(content);
})
再运行,就对啦!
网友评论