Я установил веб-сервер, используя узел JS и модуль Express. Мой код выглядит следующим образом:Проблема определения области с использованием require() в узле JS
дерево файлов:
/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
Почему мангуст не известен в этом контексте, когда я включил его в server.js, файл, в который входит route.js? Должен ли я потребовать() mongoose снова в routes.js? Что мне здесь не хватает?
Так что если я правильно понимаю; В случае номер один модуль мангуста будет кэшироваться и не вызвать дополнительную нагрузку? – matthiasdv
@matthiasdv - Да, узел кэширует все модули, поэтому он во второй раз просто возвращает маркер кэшированного модуля. Он не загружает и не запускает какой-либо новый код. – jfriend00