获取从哪个node.js执行的目录

我有一些项目,我运行它与node main.js / make test等。我需要的是从脚本获取此目录。 不仅来自main.js ,还来自任何子模块。 我尝试使用path插件和__directory ,但我得到当前文件的path(例如子模块)。 我也尝试require('path').dirname(require.main.filename) ,但是当我运行make test我得到摩卡dirname而不是我的项目目录。 什么是解决这个最简单的方法?

process.cwd()将提供。

__dirname为您提供文件所在的path。

require.cache存储每个加载的模块及其关联的导入值,父模块,子模块,绝对文件path等。

我相信每个模块都被分配到caching对象使用其文件path作为caching的关键,但你可能要仔细检查,只是为了确保。

如果是这样的话,像Object.keys(require.cache)这样简单的东西就会给你一个所有模块的文件path的数组。 然后根据需要parsing每个path,从每个模块path中提取您正在查找的目录信息。