【问题标题】:Require for a relative path across modules需要跨模块的相对路径
【发布时间】:2016-06-05 04:25:36
【问题描述】:

我有一个项目A,它的根目录中有一个config.json 文件。项目依赖外部模块B,调用B.setConfig('./config.json')

B.setConfig(path) 内部,如果我调用fs.existsSync(path),它会说好的,文件存在,但调用require(path) 失败并显示Cannot find module "./config.json"

是否可以在模块B 内调整相对路径以使require 工作?

我不希望使用完整路径调用setConfig,因为这会让事情变得尴尬。

【问题讨论】:

    标签: node.js path fs


    【解决方案1】:

    我最终发现,如果我们想从模块A(称为remotePath)中获取相对路径,并在模块B 中的require 中使用它,那么就可以得到完整路径在模块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 启动文件,我们从中获取目录路径,然后将其与远程相对路径连接起来,从而为我们提供完整路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-03
      • 2023-04-01
      • 2015-02-23
      • 2012-12-03
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      相关资源
      最近更新 更多