1

私はノード/エクスプレスにかなり慣れていませんが、これまでのところ気に入っています。

いくつかのアプリを作成して気づいたことの 1 つは、要求オブジェクトのプロパティ値が、必要なモジュール内の要求間で保持される場合があることです。必ずしも同じ IP またはブラウザからであるとは限りません。

たとえば、次の非常に単純な GET リクエストを見てみましょう。

GET /lookup/?first=ben&last=ipsen

これは次のように処理されます。

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        res.send(user) 
     });

 });

明らかに、これはうまく機能し、人生は素晴らしいものです。ただし...空の値または値がない2番目のリクエストを受信した場合は、次のように言います。

 GET /lookup/?first=

app.get('/lookup/', function(req, res){ 
     lookup = require('lookup')
     lookup.find_user(req, res, function(err, user){
        if(err) throw new Error(err) 
        // user.first = ben 
        // user.last = ipsen !?
        res.send(user) 
     });

 });

これは、require cache and not express の障害によって引き起こされた問題ですか? リクエスト内でモジュールをロードするのは間違いですか? リクエストに基づいて特定のモジュールをロードしたい場合がたくさんありますが、その「要件」がなくても生きていける.. har.

私は確かにここでいくつかの初心者の問題を経験していますが、いつものようにガイダンスをいただければ幸いです!

4

1 に答える 1

2

require()キャッシュに問題はありません。毎回同じオブジェクトを返すだけで、これには何の問題もありません。

問題はlookupモジュールにあると思います。var変数をグローバルに定義したか、変数の前で使用するのを忘れた可能性があります。

于 2013-06-24T03:11:47.497 に答える