在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