首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解ExpressJS应用程序启动

了解ExpressJS应用程序启动
EN

Stack Overflow用户
提问于 2016-06-07 18:21:12
回答 1查看 60关注 0票数 1

我正在为如何在Express中启动应用程序而苦苦挣扎。我将解释我的用例:

我有一个configuration-Manager模块,所有其他应用程序模块都使用它来加载所需的配置。我正在app.listen中设置配置

代码语言:javascript
复制
app.listen(9000, function () {
    try
    {
        config_manager.setSiteConfig();
        console.log('settings..!!!')
    }
    catch(err)
    {
        console.log(err.stack);
    }
});

在同一应用程序的另一个模块中,我调用Configuration-Manager函数来加载配置,但它返回空。代码是这样的:

代码语言:javascript
复制
var config_manager = require('configuration-manager');
console.log(config_manager.loadConfig()); // returns empty object {}

我正在使用node app.js运行应用程序。首先打印空对象,然后打印('settings..!!!')。Express会在调用app.listen()之前编译脚本吗?如何确保在编译/加载其他文件之前设置了我的配置?

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 19:57:26

Express的确首先处理文件中的所有语句,基本上是启动时不在函数中的所有语句。在本例中,var config_manager = require('configuration-manager'); console.log(config_manager.loadConfig()); // returns empty object {}app.listen之前执行,因为您在app.listen之前重新请求配置。

您最好在第一次需要配置之后立即处理它(如果app.js是您的主文件,这意味着它第一次在任何文件中遇到指向configuration-managerrequire语句)。

这应该会让你的代码正常工作:

代码语言:javascript
复制
var config_manager = require('configuration-manager');
try {
    config_manager.setSiteConfig();
} catch(err) {
    console.log(err.stack);
}
console.log(config_manager.loadConfig()); // returns empty object {}

然后

代码语言:javascript
复制
app.listen(9000, function () {
    console.log('settings..!!!', config_manager.loadConfig()) // Should correctly print your config
 });

如果这不起作用,那么问题不在于执行的顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37676674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档