初めてNode.jsを使用しています。node-staticで静的ファイルを提供し、 journeyでルーティングしています。残念ながら、この2つは互いに競合しているようであり、競合を防ぐ最善の方法がわかりません。私のサーバーは次のようになります。
var http = require('http');
var nodeStatic = require('node-static');
var journey = require('journey');
var fileServer = new nodeStatic.Server('./public');
var router = new journey.Router;
module.exports = http.createServer(function (req, res) {
router.get('/api').bind(function (req, res) {
res.send(200);
});
var fileServer = new nodeStatic.Server('./public');
var router = new journey.Router;
module.exports = http.createServer(function (req, res) {
router.get('/api').bind(function (req, res) {
res.send(200);
});
req.addListener('end', function () {
fileServer.serve(req, res);
router.handle(req, '', function (result) {
res.writeHead(result.status, result.headers);
res.end(result.body);
});
});
});
これに伴う問題は、Journeyルーターが404応答を送信することです。私がそれを機能させることができた唯一の方法は、end
リスナーでこれを行うことです:
req.addListener('end', function () {
router.handle(req, '', function (result) {
if (result.status === 404) {
fileServer.serve(req, res);
}
else {
res.writeHead(result.status, result.headers);
res.end(result.body);
}
});
});
しかし、これは私が物事を処理する方法のようには思えません。私は何が間違っているのですか?