在Node.js中获取应用程序的完整路径

时间:2013-09-04 17:31:01

标签: node.js

我想知道是否有最好的方法或最佳实践来获取Node.js中的完整应用程序路径。示例:我在子文件夹 /apps/myapp/data/models/mymodel.js 中有一个模块,我想获取应用程序的完整路径(不是文件的完整路径),这将返回 / apps / myapp ,我该怎么做?我知道 _ dirname _file 仅与文件本身有关,但不是应用程序的完整路径。

2 个答案:

答案 0 :(得分:22)

可能有更好的解决方案,这应该可行:

var path = require('path');

// find the first module to be loaded
var topModule = module;

while(topModule.parent)
  topModule = topModule.parent;

var appDir = path.dirname(topModule.filename);
console.log(appDir);

编辑:Andreas在评论中提出了更好的解决方案:

path.dirname(require.main.filename)

编辑:Nam Nguyen的另一个解决方案

path.dirname(process.mainModule.filename)

答案 1 :(得分:3)

这对我有用..主管从不同的目录运行应用程序。

require('path').dirname(Object.keys(require.cache)[0])

示例..文件: /desktop/ya/node.js

  require('./ya2/submodule')();

/desktop/ya/ya2/submodule.js

module.exports = function(){
    console.log(require('path').dirname(Object.keys(require.cache)[0]))
}

$ node node.js  
       => /desktop/ya

$ (from /desktop) supervisor ya/node.js
       => /desktop/ya