我目前正在为用户网站创作一个组件,为其服务器添加了大量资源。就我而言,我想使用express,但用户可能正在使用表达自己或其他一些Web框架。
因为我希望这只是开箱即用,我试图通过代理http.createServer
来设置我的快速管道。以这种方式注入管道似乎在我处理请求的情况下工作得相当好,但是在我让它失败并执行用户回调的情况下它会失败(具体来说,它表示已经发送了响应头)。 / p>
以下是我正在研究的样本。有什么想法吗?
var http = require('http');
var express = require('express');
var setupProxy = function setupProxy() {
var app = buildApp();
var oldCreateServer = http.createServer;
http.createServer = function(callback) {
return oldCreateServer(function(req, res) {n
app.apply(this, arguments);
if (!res.finished) {
callback.apply(this, arguments);
}
});
};
};
var buildApp = function buildApp() {
var app = express();
app.use('/test', function(req, res) {
res.send('Hello World');
});
return app;
};
答案 0 :(得分:1)
我怀疑当您的任何路线都没有匹配时,您的快速处理会创建默认的404响应。因此,当您不处理它时,这将是已发送标题的原因,但尝试将其传递。
所以,我认为你需要你自己的404处理程序,它不会对请求写任何内容(例如什么都不做),但是让Express不要处理它。
或者,另一种可能性是从您的快速404处理程序调用用户的服务器回调,而不是其他地方。