在express.js 4中包含所有路由的模块

时间:2014-09-19 15:44:57

标签: node.js express express-4

我正在使用Express 4.2.0

是否可以在app.js中包含模块并在任何已定义的路线中使用它?

现在这不起作用:

app.js

//..
var request = require('request');

var routes = require('./routes/index');
var users = require('./routes/users');

app.use('/', routes);
app.use('/users', users);
//...


路由/ user.js的

var express = require('express');
var router = express.Router();

router.get('/add', function(req, res) {
    var session = req.session;
    request('http://localhost:8181/Test?val1=getDepartments', function (error, response, body) {
       //...
    });

    res.render('users/add');
});

module.exports = router;

它会说routes/user.js

中没有定义“请求”
  

ReferenceError:未定义请求       在Object.module.exports [作为句柄](C:\ inetpub \ wwwroot \ node7 \ routes \ users。   JS:12:5)

必须在每个想要使用它们的路线中包含模块听起来不是一个合适的解决方案......

2 个答案:

答案 0 :(得分:4)

是的,在Node.js中有两种创建全局变量的方法,一种使用global object,另一种使用module.exports

以下是如何,

方法1.声明不带var关键字的变量。就像importModName = require('modxyz')一样,它将存储在全局对象中,因此您可以在global.importModName

之类的任何地方使用它

方法2.使用exports选项。 var importModName = require('modxyz'); module.exports = importModName ;您可以在其他模块中使用它。

在这里查看更多解释http://www.hacksparrow.com/global-variables-in-node-js.html

答案 1 :(得分:1)

你可以省略var而只做request = require('request');但这不赞成。

Node.js缓存模块。标准方法是在需要时要求模块。