使用另一个文件中的函数,不需要

Use functions fron another file, without require

上下文:

我有 3 个文件,parent.jschild1.jschild2.js

parent.js

let child1 = require("./child1.js")
let child2 = require("./child2.js")
let key = "*****"

child1.start(key)
child2.start();

child1.js

let key = false;

module.exports = {
    action: async() => {
        return someApi.get(key);
    },
    start: async(_key) => {
        key = key;
    }
}

child2.js

module.exports = {
    action: async() => {
        let res = await child1.action()
        ...
    },
    start: async() => {
        // startup actions
    }
}

问题

我需要在 child2 中 运行 来自 child1 的函数,但我不能使用 require,因为 [=19 只能有 1 个实例=]

有谁知道解决这个问题的方法吗?谢谢

我认为你问错了问题:)
如果您需要 child1 是唯一的,您应该使用单调并在需要的任何地方要求它。

//child1
let instance

module.export = () => {
  if(!instance) {
     instance = {
    action: async() => {
        return someApi.get(key);
    },
    start: async(_key) => {
        key = key;
    }
   }
   return instance
}

我个人不喜欢单调方法,但它很方便

您可以尝试的另一种方法是将 child1 服务实例注入 child2 'constructor'
你只需要导出一个函数而不是一个对象
parent.js

let child1 = require("./child1.js")()
let child2 = require("./child2.js")(child1)
let key = "*****"

child1.start(key)
child2.start();

child2

module.exports = (child1) => {
    
    const action =  async() => {
        let res = await child1.action()
        ...
    }
    const start =  async() => {
        // startup actions
    }
    return {action, start}
}