Node.js module.js中的app.js中的触发器函数

Node.js module.js中的app.js中的触发器函数,node.js,express,node-modules,Node.js,Express,Node Modules,第一次海报-请原谅(并打电话给我)任何格式错误 假设我有app.js,它需要module.js。在module.js中,我有一个运行的express服务器,可以接收简单的webrequests(GET/POST)。当我在module.js中收到请求时,是否有方法触发app.js中的函数 大致如下: var webModule = require('./module.js') webModule.on('GET', async function (req) { //do stuff wit

第一次海报-请原谅(并打电话给我)任何格式错误

假设我有app.js,它需要
module.js
。在module.js中,我有一个运行的express服务器,可以接收简单的webrequests(GET/POST)。当我在
module.js
中收到请求时,是否有方法触发
app.js
中的函数

大致如下:

var webModule = require('./module.js')
webModule.on('GET', async function (req) {
    //do stuff with the request
});

我之所以不把express服务器放在
app.js
中,是因为我想运行一定量的代码来验证请求是否合法,然后在单独的脚本中重复使用
module.js
,以最大限度地减少代码量,并避免每次更新身份验证过程时都必须更新5-6个脚本。

您可以使用Node.js中存在的事件系统。如果设置正确,则可以在每次调用时发出一个事件,并让侦听器响应该事件

示例来自:


在您的例子中,您可以创建一个类来扩展在每个请求中使用的EventEmitter。然后,当请求得到调用时,该类可以发出一个事件,然后通过设置侦听器在app.js文件中处理该调用。

我可能有一个解决方案,需要一些时间来编写代码(因为我的问题显然非常简单)

module.js
中:

var functionActions={};
module.exports={
on:(异步函数(requestType,returnFunction){
functionActions[requestType].do=returnFunction;
});
}
//通用快递代码
app.get('*',函数(req,res){
如果(verifyRequest(req)=‘OK’{//身份验证
返回函数Actions['GET'].do();
}否则{//如果请求未经授权
res.status(403).send('停止尝试攻击我,你这个愚蠢的黑客ಠ╭╮ಠ');
}

})
这真是太聪明了(可能比我现在的想法好多了),我会试试的!非常感谢你!希望它能解决你想解决的问题:)@omgitsbxrt成功了吗?
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('an event occurred!');
});
myEmitter.emit('event');