[英]Node.JS undefined is not a function on required module
我正在尝试使用创建的名为user.js的类。 该用户的代码是:
function User(){};
User.prototype.addUser = function(){
//Do stuff
return 0;
};
module.exports = User;
我将其包含在index.js路由文件中,如下所示:
var config = require('../lib/config');
var db = require('../lib/db');
var User = require('../lib/user');
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
/* GET create user. */
router.get('/newuser', function(req, res, next) {
*****var newuser = User.addUser();*****
res.render('index', {
user: newuser
});
});
module.exports = router;
但是,当我访问localhost / newuser时,出现以下错误: TypeError: undefined is not a function
。 我在上面用5个星号标记的行上的index.js中引发了此错误。
您正在定义一个名为User()
的构造函数并导出它。 但是,然后当您require('../lib/user')
,便获得了构造函数,但您从未使用它构造新对象,因此实际上并没有类型为User
的对象,而只有构造函数因此,构造函数上没有方法addUser()
。
代替这个:
var User = require('../lib/user');
您可以这样调用构造函数:
var u = require('../lib/user');
var User = new u();
或者,如果您永远不需要制造另一个,则可以一行完成全部操作:
var User = new (require('../lib/user'))();
另一种方法是更改您的User.js类以在这些行上返回某些内容...
function User(){};
User.prototype.addUser = function(){
//Do stuff
return 0;
};
module.exports = new User();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.