0

次のコードは応答を返していません。理由はありますか?

var express = require('express'),
    app1 = express(),
    app2 = express();

app1.use(function(req, res, next) {
    app2.emit('request', req, res);
});

app2.get('/', function(req, res) {
    res.send("hi from app2");
});

app1.listen(80);
4

1 に答える 1

1

Express アプリケーション ( によって返されるものexpress()) は HTTP ではありませんServerrequestイベントを発行または消費しません。

これは実際にはリクエスト ハンドラー関数です。これは、Serverrequestイベントにアタッチするものです。(これは、 を呼び出すときに内部的に行われますapp.listen()。新しい httpServerが作成され、アプリがそのrequestイベントに関連付けられます。)

したがって、必要なことは、ハンドラー関数を呼び出すことだけです。

var express = require('express'),
    app1 = express(),
    app2 = express();

app1.use(function(req, res, next) {
    app2(req, res);
});

app2.get('/', function(req, res) {
    res.send("hi from app2");
});

app1.listen(80);
于 2013-09-04T19:31:34.583 に答える