需要跨模块的相对路径
Require for a relative path across modules
我的项目 A
在其根目录中有一个 config.json
文件。项目依赖外部模块B,调用B.setConfig('./config.json')
.
在 B.setConfig(path)
中,如果我调用 fs.existsSync(path)
,它说好的,文件存在,但调用 require(path)
失败并显示 Cannot find module "./config.json"
。
是否可以在模块 B
中调整相对路径以使 require
工作?
我不希望用完整路径调用 setConfig
,因为这会使事情变得尴尬。
我最终发现,如果我们想从模块 A
获取相对路径(称为 remotePath
),并在模块 [=] 的 require
中使用它14=],然后要获取模块 B
内的完整路径,我们可以使用以下内容:
var path = require('path');
var fullPath = path.join(path.dirname(process.argv[1]), remotePath);
var moduleInsideA = require(localPath); // this now works
process.argv[1]
为我们提供了模块 A
启动文件,我们从中获取目录路径,然后将其与远程相对路径相结合,从而为我们提供完整路径。
我的项目 A
在其根目录中有一个 config.json
文件。项目依赖外部模块B,调用B.setConfig('./config.json')
.
在 B.setConfig(path)
中,如果我调用 fs.existsSync(path)
,它说好的,文件存在,但调用 require(path)
失败并显示 Cannot find module "./config.json"
。
是否可以在模块 B
中调整相对路径以使 require
工作?
我不希望用完整路径调用 setConfig
,因为这会使事情变得尴尬。
我最终发现,如果我们想从模块 A
获取相对路径(称为 remotePath
),并在模块 [=] 的 require
中使用它14=],然后要获取模块 B
内的完整路径,我们可以使用以下内容:
var path = require('path');
var fullPath = path.join(path.dirname(process.argv[1]), remotePath);
var moduleInsideA = require(localPath); // this now works
process.argv[1]
为我们提供了模块 A
启动文件,我们从中获取目录路径,然后将其与远程相对路径相结合,从而为我们提供完整路径。