2

初めて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);
      }
    });
  });

しかし、これは私が物事を処理する方法のようには思えません。私は何が間違っているのですか?

4

1 に答える 1

1

旅でnode-staticを使用する方法を示す要点を見つけました。私は基本的にそれを正しかった。しかし、私は代替の解決策を聞いてうれしいです!

于 2011-08-28T10:47:34.363 に答える