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