3

我正在使用 Express 4.2.0

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

现在这不起作用:

应用程序.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) 中定义

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

4

2 回答 2

4

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

这里是如何,

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

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

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

于 2014-09-19T16:15:33.173 回答
1

你可以省略var并做,request = require('request');但这是不赞成的。

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

于 2014-09-19T16:11:13.223 回答