需要跨模块的相对路径

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 启动文件,我们从中获取目录路径,然后将其与远程相对路径相结合,从而为我们提供完整路径。