NodeJs:module.filename、__filename、__dirname、process.cwd()和require.main.filename 解惑

背景

一直存在一个疑惑,require()坐标路径是啥?fs.readFile()的坐标路径又是啥?总之,需要路径的方法,我总有这样的疑问。今天就实验一下,给弄清楚。

实验

实验素材

app.js

 1 //执行 node E:\node_study\file_path_study\app.js
 2 
 3 console.log('*** app start ***');
 4 
 5 console.log('***      module.filename = ' + module.filename + ' ***');
 6 console.log('***           __filename = ' + __filename + ' ***');
 7 console.log('***            __dirname = ' + __dirname + ' ***');
 8 console.log('***        process.cwd() = ' + process.cwd() + ' ***');
 9 console.log('*** require.main.filename= ' + require.main.filename + ' ***');
10 
11 console.log('*** app end ***');
12 
13 console.log('');
14 
15 require('./lib/test'); //执行 node E:\node_study\file_path_study\app.js
 2 
 3 console.log('*** app start ***');
 4 
 5 console.log('***      module.filename = ' + module.filename + ' ***');
 6 console.log('***           __filename = ' + __filename + ' ***');
 7 console.log('***            __dirname = ' + __dirname + ' ***');
 8 console.log('***        process.cwd() = ' + process.cwd() + ' ***');
 9 console.log('*** require.main.filename= ' + require.main.filename + ' ***');
10 
11 console.log('*** app end ***');
12 
13 console.log('');
14 
15 require('./lib/test');

test.js

1 console.log('*** app start ***');
2 
3 console.log('***      module.filename = ' + module.filename + ' ***');
4 console.log('***           __filename = ' + __filename + ' ***');
5 console.log('***            __dirname = ' + __dirname + ' ***');
6 console.log('***        process.cwd() = ' + process.cwd() + ' ***');
7 console.log('*** require.main.filename= ' + require.main.filename + ' ***');
8 
9 console.log('*** app end ***'); console.log('*** app start ***');
2 
3 console.log('***      module.filename = ' + module.filename + ' ***');
4 console.log('***           __filename = ' + __filename + ' ***');
5 console.log('***            __dirname = ' + __dirname + ' ***');
6 console.log('***        process.cwd() = ' + process.cwd() + ' ***');
7 console.log('*** require.main.filename= ' + require.main.filename + ' ***');
8 
9 console.log('*** app end ***');

结果

结论

  • module.filename:开发期间,该行代码所在的文件。
  • __filename:始终等于 module.filename。
  • __dirname:开发期间,该行代码所在的目录。
  • process.cwd():运行node的工作目录,可以使用  cd /d 修改工作目录。
  • require.main.filename:用node命令启动的module的filename, 如 node xxx,这里的filename就是这个xxx。

require()方法的坐标路径是:module.filename;fs.readFile()的坐标路径是:process.cwd()。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值