我的项目A
在其根目录中有config.json
个文件。该项目依赖于外部模块B,调用B.setConfig('./config.json')
。
在B.setConfig(path)
内,如果我拨打fs.existsSync(path)
,则说好,文件存在,但调用require(path)
失败并显示Cannot find module "./config.json"
。
是否可以在模块B
内部调整相对路径以使require
有效?
我不希望以完整路径调用setConfig
,因为它会使事情变得尴尬。
答案 0 :(得分:0)
我最终发现,如果我们想要从模块A
(称之为remotePath
)获取相对路径,并在模块{{1}中require
内使用它然后,为了获得模块B
内的完整路径,我们可以使用以下内容:
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]
启动文件,我们从中获取目录路径,然后将其与远程相对路径连接起来,然后为我们提供完整路径。