我试图将回调变量从app.get()发送到fork进程,但当我这样做时,我得到以下错误:
TypeError: conversion circular structure to JSON
这样做的目的是,我可以有一个主节点的web服务器,并把新的应用程序到服务器,而不必重新创建一个新的服务器。下面是一些导致问题的缩写代码:
app.get('/apps/*', function(req, res) {
req.session.myPath = req.route.params;
var progname = new RegExp("(.*?)\/", "g").exec(req.session.myPath[0])[1];
if (applications.indexOf(progname) != -1) {
var appInstance = cp.fork('./apps/'+progname+'/main.js');
appInstance.send({'_req':req,'_res':res}); <-- Error here
}
});
是否有一种方法将这些变量传递给fork的main.js进程,以允许该进程处理页面请求,而不是将其包含在app.get回调函数中的传统方式?
是否有一种方法将这些变量传递给fork的main.js进程,以允许该进程处理页面请求,而不是将其包含在app.get回调函数中的传统方式?
如果是子进程则不需要。这些是特定于进程的资源,因此您不能将它们传递给不同的进程。但是,express有挂载子应用程序的概念,所以你可以实现一堆独立的express应用程序,然后将它们全部挂载到一个包含应用程序中。否则你的子应用将需要提供一个HTTP接口,你可以代理,但这将通过HTTP来完成,而不是通过尝试直接序列化req
和res
对象到JSON数据。