ter*_*pak 2 javascript node.js express
我正在尝试使用我创建的一个名为user.js的类.该用户的代码是:
function User(){};
User.prototype.addUser = function(){
//Do stuff
return 0;
};
module.exports = User;
Run Code Online (Sandbox Code Playgroud)
我将它包含在我的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;
Run Code Online (Sandbox Code Playgroud)
但是,当我访问localhost/newuser时,我收到以下错误:TypeError: undefined is not a function.在我用上面标有5个星号的行上的index.js中抛出此错误.
您正在定义一个名为User()并导出它的构造函数.但是,当你require('../lib/user'),你得到构造函数,但你永远不会用它构造一个新对象,所以你实际上没有一个类型的对象User,你只有构造函数,因此构造函数上没有方法addUser().
而不是这个:
var User = require('../lib/user');
Run Code Online (Sandbox Code Playgroud)
你可以像这样调用构造函数:
var u = require('../lib/user');
var User = new u();
Run Code Online (Sandbox Code Playgroud)
或者,如果您永远不需要制作另一个,您可以在一行中完成所有操作:
var User = new (require('../lib/user'))();
Run Code Online (Sandbox Code Playgroud)