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

我想知道是否有一个最好的方法或最佳做法,以获得应用程序的完整path在Node.js. 例子:我在子文件夹/apps/myapp/data/models/mymodel.js中有一个模块,我想获得应用程序的完整path(不是文件的完整path),这将返回我/ apps / myapp ,我该怎么做? 我知道_ dirname_file只是相对于文件本身,而不是应用程序的完整path。

可能有更好的解决scheme,但这应该工作:

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

编辑 :安德烈亚斯在评论中提出了一个更好的解决scheme:

 path.dirname(require.main.filename) 

编辑 :Nam Nguyen的另一个解决scheme

 path.dirname(process.mainModule.filename) 

这工作对我来说。主pipe从不同的目录运行应用程序。

 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