NodeJS 几个常见的路径

****了解 NodeJS 中常见的路径****

唠嗑

之前在做毕设的时候就因为路径问题踩了坑,那时候只顾着实现,没有多去了解。现在再用到 NodeJS,还是对这些路径问题挺晕的,多方了解之后,做一个简单的笔记吧。

NodeJS 常见的获取路径的属性或方法

  • module.filename
  • __filename
  • __dirname
  • process_cwd
  • require.main.filename

以上。

那么这些东西都表示什么?动手试试看。

测试

在任意路径下以下列目录来测试:

-- toknowpath
|-- lib
|-- test.js
|-- app.js

app.js

//执行 node D:\nodejs\toknowroute\app.js
console.log('*** app start ***');
console.log('*** module.filename = ' + module.filename + ' ***');
console.log('*** __filename = ' + __filename + ' ***');
console.log('*** __dirname = ' + __dirname + ' ***');
console.log('*** process.cwd() = ' + process.cwd() + ' ***');
console.log('*** require.main.filename= ' + require.main.filename + ' ***');
console.log('*** app end ***');
console.log('');
require('./lib/test');

lib/test.js

console.log('*** test start ***');
console.log('*** module.filename = ' + module.filename + ' ***');
console.log('*** __filename = ' + __filename + ' ***');
console.log('*** __dirname = ' + __dirname + ' ***');
console.log('*** process.cwd() = ' + process.cwd() + ' ***');
console.log('*** require.main.filename= ' + require.main.filename + ' ***');
console.log('*** test end ***');

结果

*** app start ***
*** module.filename = D:\nodejs\toknowroute\app.js ***
*** __filename = D:\nodejs\toknowroute\app.js ***
*** __dirname = D:\nodejs\toknowroute ***
*** process.cwd() = D:\nodejs\toknowroute ***
*** require.main.filename= D:\nodejs\toknowroute\app.js ***
*** app end ***
*** test start ***
*** module.filename = D:\nodejs\toknowroute\lib\test.js ***
*** __filename = D:\nodejs\toknowroute\lib\test.js ***
*** __dirname = D:\nodejs\toknowroute\lib ***
*** process.cwd() = D:\nodejs\toknowroute ***
*** require.main.filename= D:\nodejs\toknowroute\app.js ***
*** test end ***

结论

  1. module.filename
    执行代码所在的文件。
  2. __filename
    同上。
  3. __dirname
    执行代码所在文件的路径
  4. process_cwd
    运行 Node 的工作目录
  5. require.main.filename
    用 node 命令执行的文件

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