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