【问题标题】:Access app.set setting in controller of express application on node.js在 node.js 上的 express 应用程序的控制器中访问 app.set 设置
【发布时间】:2012-05-13 23:24:07
【问题描述】:

在我的app.js 中,我设置了以下设置

app.set('mailTemplatesDir', __dirname + '/mails');

现在我想在我的一个控制器中读取'mailTemplatesDir' 的值,如何访问那里的设置?我不希望将app 设为全局变量。

【问题讨论】:

    标签: node.js settings express


    【解决方案1】:

    如果您通过通常调用createServer() 创建了app,那么在不通过该函数返回的对象的情况下,确实没有其他方法可以访问选项设置。 Express 不会缓存服务器对象,而只是在对象上返回new 的结果。

    如果您使用为您生成的标准 express 样板创建了您的应用程序,您可能有一行创建 app 如下所示:

    var app = module.exports = express.createServer();
    

    这实际上并没有将app 创建为全局变量,而是使其可用作模块导出。您可以通过这种方式要求您的 app.js 模块,从另一个模块访问您的 mailTemplatesDir 选项:

    var templateDir = require('./app').set('mailTemplatesDir');
    

    【讨论】:

    • 感谢您的回答,通过实施 app = module.exports = express.createServer() 方法尝试了您的想法,但是,当我在另一个文件中需要该应用程序时,我总是收到 EADDRINUSE 错误(我猜想每次我需要应用程序模块时服务器都会尝试重新侦听端口)。知道如何解决吗?
    • 嗯...我尝试的示例似乎有效。我继续将我的示例放在github 上。我可以在调用listen之前在单独的模块中读回选项,并在回调函数中作为获取http请求的结果而不会遇到您描述的问题。也许您可以发布您的 app.js?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多