簡體   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