javascript - Node.JS undefined 不是所需模块上的函数

标签 javascript node.js express

我正在尝试使用我创建的名为 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'))();

关于javascript - Node.JS undefined 不是所需模块上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622467/

相关文章:

node.js - 如何使用 Express.js 正确处理 SIGINT?

javascript - 使用 JavaScript 在网页之间共享数据

javascript - 如何使用 TypeScript 键入路由器

javascript - ThreeJs 单击时创建对象/网格

node.js - Bcrypt 在 Linux 上安装失败

node.js - 将变量发送到express js中的所有路由

javascript - 如何删除 html 5 表单元素的默认样式?

javascript - 如何在管道 node.js 进程中获取终端大小?

node.js - 使用 Express 检查资源是否存在的最佳方法

javascript - 全局设置动态 pug 变量