我在我的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
知道为什么吗?
答案 0 :(得分:5)
您的控制器会创建一个全新的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;
答案 1 :(得分:0)
在您的示例中,您要实例化第二个$scope
,然后尝试ControllerAs
来自的值app
。您需要从完全相同的对象get
:
get
如果您不熟悉,可以使用cli generator来构建一个应用程序,向您展示如何在整个应用程序中使用相同的快速实例的理智模式。