我正在使用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)
必须在每个想要使用它们的路线中包含模块听起来不是一个合适的解决方案......
答案 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缓存模块。标准方法是在需要时要求模块。