app.get在Node / Express中返回undefined

时间:2015-12-06 10:55:12

标签: javascript node.js

我在我的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 

知道为什么吗?

2 个答案:

答案 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来构建一个应用程序,向您展示如何在整个应用程序中使用相同的快速实例的理智模式。