我有一些项目,我用node main.js
/make test
等运行它。我需要的是从脚本中获取这个目录。不仅来自main.js
,还来自任何子模块。我尝试使用path
plugin 和__directory
,但我得到了当前文件的路径(例如子模块)。我也试过require('path').dirname(require.main.filename)
了,但是当我运行时,make test
我得到 mocha dirname 而不是我的项目目录。解决这个问题的最简单方法是什么?
问问题
14356 次
5 回答
57
process.cwd()
将提供。
于 2013-03-01T02:10:58.797 回答
6
__dirname
为您提供文件所在的路径。
于 2013-03-01T02:11:08.090 回答
0
require.cache
存储每个加载的模块及其相关的导入值、父模块、子模块、绝对文件路径等。
我相信每个模块都使用其文件路径作为缓存键分配给缓存对象,但您可能需要仔细检查以确保。
但是,如果是这种情况,那么简单的事情Object.keys(require.cache)
将为您提供所有模块的文件路径数组。然后只需根据需要解析每个路径,以从每个模块路径中提取您要查找的目录信息。
于 2017-04-27T21:23:35.587 回答
0
这是一个方便的功能,可以从控制台访问提供相对路径的文件
function getPath(filename) {
return (filename[0] != '/' ? process.cwd() + '/' : "") + filename
}
于 2020-02-03T18:52:14.997 回答
0
如果您想要可执行文件而不是 JS 模块的路径,还有一种选择。您可以使用:
process.argv[1] // 0 is path to node
__dirname
并且__filename
也可以使用,但这些是模块的路径,因此如果将其放入文件中,require
它将显示该文件的路径。
于 2020-12-11T21:15:28.957 回答