繁体   English   中英

未定义的Node.JS不是必需模块上的函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM