【问题标题】:node.js know the file of where the require happenednode.js 知道发生需求的文件
【发布时间】:2017-06-11 13:31:36
【问题描述】:

我有 2 个文件

// file1.js
//some js code that will do what I ask in the question
module.exports = myFunc

//file2.js
require('./file1')

file1.js 是否有可能以任何方式知道谁需要它?所以当file2需要file1时,file1会知道它是file2吗?

【问题讨论】:

  • 你为什么要这样做?如果两个模块都需要那个怎么办?
  • 我的 js-fu 很弱,但我希望 file1 创建一个名称包含 file2 的文件
  • 如果你想要这个进行调试,请查看new Error().stack。如果你想要这个逻辑,不要,添加一个抽象层,这样你就可以首先以不同的方式调用它。
  • @PaulS。所以如果它是 require('file3')(__filename) 和 file3 将调用 file1 中的逻辑并接收到文件名会更好?
  • 我们仍然不知道您要做什么。你在调试什么吗?开发日志库?有多种方法可以执行您告诉我们的操作,但通常没有必要,可以用通用/基本编程模式代替。

标签: javascript node.js module require


【解决方案1】:

您注意到您想使用file1s 功能创建一个与调用者同名的文件。您可以通过在模块中使用 __filename 变量来做到这一点。

与其尝试访问调用者,不如在使用file1 时传递此变量。例如:

require('./file1')(__filename)

file1 有类似的东西:

module.exports = filename => {
    // create file here
}

虽然这应该可以解决您的问题,但这似乎是一个奇怪的要求,并且可能有更好的方法来实现您真正追求的目标。

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 2018-11-26
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多