app.js
var express = require('express');
var app = express();
var testVar = "Hello World";
var index = require('./routes/index');
app.use('/', index);
index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
console.log(testVar);
});
module.exports(router);
如何在./routes/index.js中传递变量“testVar”?有人有想法吗?提前谢谢!
答案 0 :(得分:1)
你可以在这样的中间件中做到这一点:
var express = require('express');
var app = express();
var testVar = "Hello World";
var myMiddleWare = function (req, res, next) {
req.testVar = testVar;
next();
}
var index = require('./routes/index');
app.use('/', myMiddleWare, index);
为索引的每个请求调用中间件。
与普通路由功能的唯一区别是第三个参数“next”,可能会被调用以进入下一步(索引),或者不被调用(如果发生错误或其他事情)
您可以在此处详细了解中间件:http://expressjs.com/en/guide/using-middleware.html
答案 1 :(得分:1)
您可以在app.js
:
app.use(function (req, res, next) {
req.testVar = testVar;
next();
});
然后在index.js
中获取您之前设置的req
变量:
router.get('/', function(req, res) {
console.log(req.testVar);
});
答案 2 :(得分:0)
您可以传递如下所示的变量
app.get('/user/:testVar', function (req,res,next) { });
然后使用
req.params.testVar
检索参数
答案 3 :(得分:0)
我不知道你这样做的目的。但这就是如何在没有中间件的情况下将数据发送到./routes/index.js
并获得路由器。
index.js
var express = require('express');
var router = express.Router();
var testVar = null;
router.get('/', function(req, res) {
console.log(testVar);
});
module.exports = function(testData){
testVar = testData;
return router;
}
app.js
var testVar = "Hello World";
var index = require('./routes/index')(testVar);