除了process.cwd()之外,是否有其他方法来获取当前项目根目录的路径名。Node是否实现了ruby的属性Rails.root之类的东西。我要找的是稳定可靠的东西。


当前回答

如果你想从一个正在运行的node.js应用程序中确定项目根,你也可以简单地这样做。

process.mainModule.path

其他回答

的过程。mainModule自v 14.0.0起已弃用。参考答案时,请使用require。主要部分,其余部分还在。

process.mainModule.paths
  .filter(p => !p.includes('node_modules'))
  .shift()

获取主模块中的所有路径,并过滤掉带有"node_modules"的路径, 然后获取剩余路径列表中的第一个。意外行为不会抛出错误,只是一个未定义的错误。

对我来说很好,即使在调用ie $ mocha时也是如此。

所有这些“根dirs”大多需要解析一些虚拟路径到一个真实的堆路径,所以可能你应该看看path.resolve?

var path= require('path');
var filePath = path.resolve('our/virtual/path.ext');

在主文件的顶部添加:

mainDir = __dirname;

然后在你需要的任何文件中使用它:

console.log('mainDir ' + mainDir);

mainDir是全局定义的,如果你只需要在当前文件中使用它-使用__dirname代替。 主文件通常在项目的根文件夹中,并命名为Main .js, index.js, gulpfile.js。

我知道这已经太迟了。 但我们可以通过两个方法获取根URL

1号方法

var path = require('path');
path.dirname(require.main.filename);

2方法

var path = require('path');
path.dirname(process.mainModule.filename);

参考链接:—https://gist.github.com/geekiam/e2e3e0325abd9023d3a3

你可以简单地在express app变量中添加根目录路径,并从app中获取这个路径。在index.js或app.js文件中。并使用req.app.get('rootDirectory')在代码中获取根目录路径。