Node.js require('../ controllers / UserController.js')返回未定义?

时间:2018-09-09 06:35:32

标签: javascript node.js

im试图构建一个Web应用程序,并使用nodeJS和mongoose(以及其他模块)。模块依赖性看起来像这样Image showing project heirarchy

我有一个Accessor.js模块,基本上所有东西都放在一起并相互绑定,因此例如说猫鼬对象需要由所有模型共享,所有这些绑定和依赖关系都在这里处理。

这就是我的Accessor.js文件的样子

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myapp');

var userModel = new require('../models/User.js')(mongoose);
var userController = new require('../controllers/UserController.js')(userModel);

console.log('USERCONTROLLER '+userController); //this shows value to be undefined

module.exports = {
  getUserController : function(){
    console.log("RETURNING USERCONTROLLER : "+ userController);
    return userController;
  }
};

我注释掉了显示UserController对象的值的行 未定义

这是我的UserController.js文件的外观

var UserController = function(userModel)
{
  this.userModel = userModel;
}
UserController.prototype.getUsersCount = function(){
  return userModel.getUsersCount();
}
UserController.prototype.isUsernameAvailable = function(username){
  ...
  ...
};

module.exports = UserController;

我试图在互联网上寻找可能由于该问题而导致的问题,一些帖子建议循环依赖性可能导致此类问题,但事实并非如此。我什至尝试了不同的方法在UserController.js中作为对象和构造函数对象来实现它,但对我来说没有用,请帮助:)

1 个答案:

答案 0 :(得分:0)

您忘了在require语句中使用括号。

已更正:

var userController = new (require('../controllers/UserController.js'))(userModel);