2015-02-23 13 views
0

尝试在我的路由器文件中要求并使用模块。我设法要求它(我认为),但现在它说以下错误:NodeJs:参考错误:(我自己的var)未定义

ReferenceError: USERS is not defined at c:\work\nodejs\router\main.js:32:19 at Layer.handle [as handle_request] (c:\work\nodejs\node_modules\express\lib\router\layer.js:82:5) at next (c:\work\nodejs\node_modules\express\lib\router\route.js:110:13) at Route.dispatch (c:\work\nodejs\node_modules\express\lib\router\route.js:91:3) at Layer.handle [as handle_request] (c:\work\nodejs\node_modules\express\lib\router\layer.js:82:5) at c:\work\nodejs\node_modules\express\lib\router\index.js:267:22 at Function.proto.process_params (c:\work\nodejs\node_modules\express\lib\router\index.js:321:12) at next (c:\work\nodejs\node_modules\express\lib\router\index.js:261:10) at c:\work\nodejs\node_modules\body-parser\lib\read.js:111:5 at IncomingMessage.onEnd (c:\work\nodejs\node_modules\body-parser\node_modules\raw-body\index.js:136:7)

,用户被包含对象的数组对象如下:

//users.js 
module.exports = function() { 

// Create User prototype and objects 
var USERS = { users: [] }; 

function User(type, useremail, password) { 
this.type = type; 
this.useremail = useremail; 
this.password = password; 
} 

var Bob = new User("rep", "[email protected]", "qwerty"); 
USERS.users.push(Bob); 

var Helen = new User("rep", "[email protected]", "test"); 
USERS.users.push(Helen); 

var Dominic = new User("customer", "[email protected]", "1234"); 
USERS.users.push(Dominic); 

var James = new User("grower", "[email protected]", "pass1"); 
USERS.users.push(James); 

}; 

我路由器代码:

var url = require('url'); var users = require('./router/users.js'); 

module.exports = function (app) { 

    app.get('/', function (req, res) { 
     res.render('index.html'); 
     console.log("Home page displayed"); 
    }); 

app.get('/login', function (req, res) { 
     res.render('login.html'); 
     console.log("Log in page displayed"); 

    }); 

app.get('/api/orders/:id', function (req, res) { 
     console.log(req.params.id); 
     res.json(ORDER.orders[req.params.id]); 
    }); 

    app.get('/api/orders/', function (req, res) { 
     console.log(ORDER); 
     res.json(ORDER); 

    });  app.get('/api/users/:id', function (req, res) { 
     console.log(req.params.id); 
     res.json(USERS.users[req.params.id]); 
    }); 

    app.get('/api/users/', function (req, res) { 
     console.log(USERS); 
     res.json(USERS); 

    }); 

我如何在这种情况下在我的路由器中正确引用USERS?

+0

你将不得不出口'模块中或从外部引用它的功能USERS'。 – Sirko 2015-02-23 08:25:29

+0

您无法出口'USERS' – 2015-02-23 08:34:28

+0

@AvraamMavridis我该怎么做?我试过把module.exports = function(USERS){}放在它的周围,以及module.exports = USERS;在底部 – hturner 2015-02-23 08:48:15

回答

4
//users.js 


// Create User prototype and objects 
var USERS = { users: [] }; 

function User(type, useremail, password) { 
this.type = type; 
this.useremail = useremail; 
this.password = password; 
} 

var Bob = new User("rep", "[email protected]", "qwerty"); 
USERS.users.push(Bob); 

var Helen = new User("rep", "[email protected]", "test"); 
USERS.users.push(Helen); 

var Dominic = new User("customer", "[email protected]", "1234"); 
USERS.users.push(Dominic); 

var James = new User("grower", "[email protected]", "pass1"); 
USERS.users.push(James); 

}; 

module.exports = USERS 

甚至更​​好:

var getUsers = function(){ return Users.users;}; 
var addUser = function(name, email, somethingelse) 
{ 
    var u = new User(name, email, somethingeelse); 
    Users.users.push(u); 
}; 

module.exports = { 
    getUsers: getUsers, 
    addUser: addUser 
} 
+0

为什么-1?这种方法有什么问题? – 2015-02-23 09:17:26

+1

我刚刚进行了投票。我发现你的答案容易理解,并解决了我的错误。 – hturner 2015-02-23 09:29:44