【问题标题】:Nodejs global variable not working in separate processNodejs全局变量不在单独的进程中工作
【发布时间】:2021-09-24 23:59:50
【问题描述】:

我正在使用带有 BullJS 库的队列。在入口点,我定义了global.db 变量,我可以在任何地方使用它。

在公牛的​​文档中,我阅读了单独的流程更好,因此我在文件中创建了一个新的单独流程,我正在这样做

queue.process("path-to-the-file")

在那个文件中我不能使用我的全局变量,它是未定义的。请提出解决方案或为什么会发生这种情况?

我正在查看文件是否作为模块包含在内,它知道全局变量,但如果像我上面所做的那样直接引用它,它不知道全局变量.

const Queue = require("bull");
const queue = new Queue("update-inventory-queue");
const updateInventoryProcess = require("../processes/updateInventory");
queue.process(updateInventoryProcess);

上面的 sn -p 可以工作,但是现在updateInventoryProcess 不是单独的进程,它只是模块导入的一个函数。

【问题讨论】:

    标签: node.js queue bull.js


    【解决方案1】:

    正如您所发现的,就其性质而言,单独的进程将没有您的主要 Node.js 进程的上下文。

    有几个解决方案是将该配置放在主进程和作业节点模块中都可能需要的包含文件中,或者将其作为作业数据的一部分提供。

    并非所有东西都可以在沙盒工作者的作业数据中传递,因为 Bull 使用 child_process.send 来回传递数据,并且它会进行一些序列化和解析,因此也要注意这一点。

    【讨论】:

      猜你喜欢
      • 2021-06-17
      • 2017-05-20
      • 2021-03-19
      • 2018-05-03
      • 1970-01-01
      • 2015-09-30
      • 2012-05-25
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多