Node.js 了解ExpressJS应用程序启动
我正在为应用程序启动在Express中的工作方式而挣扎。我将解释我的用例: 我有一个configuration Manager模块,所有其他应用程序模块都使用它来加载所需的配置。我正在Node.js 了解ExpressJS应用程序启动,node.js,express,Node.js,Express,我正在为应用程序启动在Express中的工作方式而挣扎。我将解释我的用例: 我有一个configuration Manager模块,所有其他应用程序模块都使用它来加载所需的配置。我正在应用程序中设置配置。请收听: app.listen(9000, function () { try { config_manager.setSiteConfig(); console.log('settings..!!!') } catch(err)
应用程序中设置配置。请收听:
app.listen(9000, function () {
try
{
config_manager.setSiteConfig();
console.log('settings..!!!')
}
catch(err)
{
console.log(err.stack);
}
});
在同一应用程序的另一个模块中,我调用Configuration Manager函数来加载配置,但它返回空。代码是这样的:
var config_manager = require('configuration-manager');
console.log(config_manager.loadConfig()); // returns empty object {}
我正在使用node app.js
运行应用程序。首先打印空对象,然后打印('settings..!!!')
。Express是否在调用app.listen()
之前编译脚本?如何确保在编译/加载其他文件之前设置了配置?Express确实首先处理文件中的所有语句,基本上是启动时函数中没有的任何语句。
在您的情况下,var config_manager=require('configuration-manager');
console.log(config_manager.loadConfig());//返回空对象{}
在app.listen
之前执行,因为您正在app.listen
之前重新查询配置
您最好在第一次需要配置后立即处理配置(如果app.js
是您的主文件,这意味着它第一次在任何文件中遇到指向configuration manager
的require
语句)
这将使您的代码正常工作:
var config_manager = require('configuration-manager');
try {
config_manager.setSiteConfig();
} catch(err) {
console.log(err.stack);
}
console.log(config_manager.loadConfig()); // returns empty object {}
然后
app.listen(9000, function () {
console.log('settings..!!!', config_manager.loadConfig()) // Should correctly print your config
});
如果这不起作用,问题不在于执行顺序。Express确实首先处理文件中的所有语句,基本上是启动时函数中没有的任何语句。
在您的情况下,var config_manager=require('configuration-manager');
console.log(config_manager.loadConfig());//返回空对象{}
在app.listen
之前执行,因为您正在app.listen
之前重新查询配置
您最好在第一次需要配置后立即处理配置(如果app.js
是您的主文件,这意味着它第一次在任何文件中遇到指向configuration manager
的require
语句)
这将使您的代码正常工作:
var config_manager = require('configuration-manager');
try {
config_manager.setSiteConfig();
} catch(err) {
console.log(err.stack);
}
console.log(config_manager.loadConfig()); // returns empty object {}
然后
app.listen(9000, function () {
console.log('settings..!!!', config_manager.loadConfig()) // Should correctly print your config
});
如果这不起作用,问题就不会出现在执行顺序上。配置加载到单独的文件中(app.js除外)。我正在将配置文件设置为在app.listenConfiguration中加载。配置文件在单独的文件中加载(app.js除外)。我正在设置要在app.listen中加载的配置文件