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');

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 ***');

結果

結論

  • 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()。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM