背景
一直存在一個疑惑,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。