ノードJSとExpressモジュールを使用してWebサーバーをセットアップしました。次のように私のコードは次のとおりです。ノードJSのrequire()を使用したスコープの問題
ファイルツリー:
/src
|
+-- server.js
+-- /app
|
+-- routes.js
server.js
// set up ======================================================================
var express = require('express');
var app = express();
var mongoose = require('mongoose');
...
// configuration ===============================================================
mongoose.connect(configDB.url);
...
// routes ======================================================================
require('./app/routes.js')(app, passport);
// launch ======================================================================
app.listen(port);
routes.js
module.exports = function(app, passport) {
app.get('/some-route', function(req, res) {
// this line bugs out
var User = mongoose.model('User', userSchema);
});
};
私の質問:mongoose.model()でroutes.jsを呼び出す
は、次のエラーがスローされます
ReferenceError:mongoose is not defined
なぜこの文脈ではmongooseは、routes.jsが含まれているserver.jsファイルに含まれていないのですか?私はroutes.jsで再びmongooseを要求する必要がありますか?私はここで何が欠けていますか?
私は正しく理解しています。 1番目のケースでは、mongooseモジュールがキャッシュされ、追加の負荷が発生しませんか? – matthiasdv
@matthiasdv - はい、ノードはすべてのモジュールをキャッシュするので、2度目に要求すると、キャッシュされたモジュールハンドルだけが返されます。新しいコードをロードしたり実行したりすることはありません。 – jfriend00