【问题标题】:Access the variable scope of another nodejs process (in a required file)访问另一个 nodejs 进程的变量范围(在所需文件中)
【发布时间】:2019-08-21 18:46:26
【问题描述】:

我被一些乍一看似乎不可能的事情困住了:

我有两个并行运行的脚本:

  • 我的应用服务器npm run start-server
  • 我的自动文档npm run documentation-auto

我的服务器是一个 models.js 文件,它引用了一个内部包含自定义动态模型的类。

我想使用在服务器进程中实例化的类(使用来自应用服务器的模型)访问该文件


文件结构:

// user-model.js
require('models');

models.registerModel(
    'user', // modelName
    { firstName: String, lastName: String } // model
);
// models.js

module.exports = class {
    registerModel(name, model) {
        this[name] = model;
    }
}

documentation-auto.js(另一个进程)

// documentation-auto.js
const models = require('../../other-app/models');
console.log(Object.keys(models)) // => registerModel (but no user :( )

有可能吗?我搜索了一遍,但一无所获...

【问题讨论】:

  • 您的 2 个应用程序是独立的,它们不能共享这样的变量。您遇到了 IPC(进程间通信)问题。在我看来,更容易的是让服务器编写一个您可以从 documentation-auto.js 观看的文件。例如写一个models.json 并在documentation-auto.js 中对这个文件使用fs.watch,以便在每次被服务器进程修改时重新加载。
  • 是的,不错的主意!可能是一个很好的解决方法

标签: javascript node.js parallel-processing scope require


【解决方案1】:

这 2 个应用程序独立运行,您不能在 2 个独立应用程序之间共享变量。对于进程间通信,有一个名为 node-ipc

的 npm 模块

https://www.npmjs.com/package/node-ipc

这可以满足您的需求

【讨论】:

  • 嗨,我认为这不适用于我的用例,因为我需要访问课程内容。如果我错了,请纠正我。
猜你喜欢
  • 2011-07-28
  • 2011-12-11
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
相关资源
最近更新 更多