关于 __dirname介绍以及使用场景
2023-01-05 本文已影响0人
扶得一人醉如苏沐晨
在每个模块中除了 require ,exports 等模块相关 API之外,还有两个特殊的成员:
__dirname:用来动态获取当前文件模块所属目录的绝对路径
__dirname:在哪里使用,就是表示当前文件所在的 目录
__filename:用来动态获取当前文件的绝对路径
__dirname的使用
如果在一个包中使用fs读取文件,而且这个文件(b.js)包含在另外的包(a.js)中
那么读取文件时候的参考的路径不是以当前的包(b.js)作为参考值
是以包含这个包(b.js)的包(a.js)作为参考路径
如果当对应的文件的目录非常深的时候,我们不容易设置
所以我们需要借助 __dirname
__dirname:在哪里使用,就是表示当前文件所在的 目录
例如如果当前文件的全路径是 c:/share/nodeday02/text1/b.js,那么__dirname 表示 c:/share/nodeday02/text1
我们可以使用__dirname表示绝对路径,但是采用的是相对的形式
b.js文件(读取b.txt文件)
var fs = require('fs');
/*如果在一个包中使用fs读取文件,而且这个文件(b.js)包含在另外的包(a.js)中
* 那么读取文件时候的参考的路径不是以当前的包(b.js)作为参考值
* 是以包含这个包(b.js)的包(a.js)作为参考路径
* 如果当对应的文件的目录非常深的时候,我们不容易设置
* 所以我们需要借助__dirname
* __dirname:在哪里使用,就是表示当前文件所在的 目录
* 例如如果当前文件的全路径是 c:/share/nodeday02/text1/b.js
* 那么__dirname 表示 c:/share/nodeday02/text1
* 我们可以使用__dirname表示绝对路径,但是采用的是相对的形式*/
fs.readFile(__dirname + '/b.txt',function (err,data) {
if (err){
console.log('读取错误');
return;
}
console.log(data);
});
这里也可以利用node.js的path对象的join方法,将传入的多个路径拼接为标准路径并将其格式化,返回规范后的路径,避免手工拼接路径字符串的繁琐
//
const path = require("path");
fs.readFile(path.join(__dirname + '/b.txt'),function (err,data) {
if (err){
console.log('读取错误');
return;
}
console.log(data);
});