我在app.js中使用express我设置了这样的东西
var express = require('express'); var app = express(); app.set('myVar', 'hello');
然后在我的控制器中我想获得价值.我做
var express = require('express'); var app = express(); console.log(app.get('myVar')) // undefineded
知道为什么吗?
您的控制器会创建一个全新的Express实例.如果您希望能够共享变量,则需要将实例传递app.js
给控制器:
// app.js var express = require('express'); var app = express(); app.set('myVar', 'hello'); require('./controller')(app); // controller.js module.exports = function(app) { console.log(app.get('myVar')); };
编辑:根据评论判断,问题不在于传递app
,而是将应用程序的各个部分移动到单独的模块中.启用它的常见设置如下所示:
// app.js var express = require('express'); var app = express(); app.set('myVar', 'hello'); app.use('/api', require('./controller/auth')); // controller/auth.js var express = require('express'); var router = express.Router(); router.get('/', function(req, res) { console.log(req.app.get('myVar')); return res.send('hello world'); }); module.exports = router;