1

IISNode (つまり、Windows)の下のノードで実行されているExpressjsを使用してアプリケーションを作成しています。

私が見たすべてのexpressjsの例と非常によく似た設定から始めます。

  backend.configure(function() {
    backend.register('html', {
      compile: function(str, options) {
        return function(locals) {
          return str;
        };
      }
    });
    backend.set('views', __dirname + '/views');
    backend.set('view engine', 'html');
    backend.set('view options', {
      layout: false
    });
    backend.use(express.bodyParser());
    backend.use(backend.router);
    backend.use(express.static(__dirname + '/public'));
  });  

私のサイトが localhost://mysite で実行されているとしましょう。次のように、すべてのルート ハンドラーを作成する必要があります。

  backend.get('/mysite/index', function(req, res, next) {
    return res.render('index');
  });

つまり、それらすべてに「mysite」というプレフィックスを付ける必要があります。私が見た例のどれもこれを必要としません。これはIISNodeと関係がありますか、それとも私が構成していない何かですか?

4

3 に答える 3

6

私はこの機能を探していましたが、静的ファイルではなく API ルートを探していました。私がしたことは、ルーターを初期化するときにマウント パスを追加したことです。だから私の設定はこのようになります

//Default configuration
app.configure(function(){
    app.use(express.compress());
    app.use(express.logger('dev'));
    app.set('json spaces',0);
    app.use(express.limit('2mb'));
    app.use(express.bodyParser());

    app.use('/api', app.router);        // <---

    app.use(function(err, req, res, callback){
        res.json(err.code, {});
    });
});

ルーターを呼び出すときの「/api」に注意してください

于 2013-04-19T13:12:08.770 に答える
1

箱から出して、これは確かにあなたがそれをしなければならない方法です. Express-resourceを調べて、機知に富んだルーティングを有効にすることもできますが、少なくともルート固有のミドルウェアに関しては、独自の注意事項があります。

一本道なら で対応できると思いますapp.set("basepath", "mysite")

于 2012-02-27T12:48:36.813 に答える
0

iisnode を使用して IIS に展開するときに高速アプリを変更する必要がないようにするには、サイトの下の仮想ディレクトリではなく、IIS Web サイトのルートに展開する必要があります。

于 2012-03-06T23:20:44.630 に答える