我想知道是否有最佳方法或最佳实践来获取 Node.js 中应用程序的完整路径。示例:我在子文件夹/apps/myapp/data/models/mymodel.js中有一个模块,我想获取应用程序的完整路径(不是文件的完整路径),这将返回我/apps/ myapp,我该怎么做?我知道_目录名或_file仅相对于文件本身,而不是应用程序的完整路径。
问问题
22462 次
2 回答
27
可能有更好的解决方案,但这应该可行:
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);
编辑:安德烈亚斯在评论中提出了一个更好的解决方案:
path.dirname(require.main.filename)
编辑:Nam Nguyen 的另一个解决方案
path.dirname(process.mainModule.filename)
于 2013-09-04T17:44:35.737 回答
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
于 2013-09-04T21:41:50.783 回答