Javascript Express.js中间件和引导应用程序

Javascript Express.js中间件和引导应用程序,javascript,node.js,express,Javascript,Node.js,Express,我目前正在开发一个nodeJS应用程序,在开始公开expressapi之前,需要在bootstrap上检查一些硬件和软件需求 我在express中面临的问题是,它需要一个HTTP请求来触发操作,但是我的引导步骤不需要请求,因为它是在应用程序每次启动时执行的一个自主服务器端例程 目前,我只是将引导过程设置为节点模块,在调用express应用程序实例化之前需要并执行它。然而,我觉得这种方式不是那么干净 如果有人能帮忙,那就太好了 现在,我只是让我的引导过程成为一个节点模块,需要它吗 并在调用expr

我目前正在开发一个nodeJS应用程序,在开始公开expressapi之前,需要在bootstrap上检查一些硬件和软件需求

我在express中面临的问题是,它需要一个HTTP请求来触发操作,但是我的引导步骤不需要请求,因为它是在应用程序每次启动时执行的一个自主服务器端例程

目前,我只是将引导过程设置为节点模块,在调用express应用程序实例化之前需要并执行它。然而,我觉得这种方式不是那么干净

如果有人能帮忙,那就太好了

现在,我只是让我的引导过程成为一个节点模块,需要它吗 并在调用express应用程序实例化之前执行它。然而, 我觉得这样不干净

为什么它不应该是干净的?事实上,这是非常干净的

现在,我只是让我的引导过程成为一个节点模块,需要它吗 并在调用express应用程序实例化之前执行它。然而, 我觉得这样不干净


为什么它不应该是干净的?事实上,这是非常干净的

由于javascript的特性,您可以在执行某项操作之前始终运行异步任务

//checlForMinimalRequirements.js
功能检查表单最小需求(){
返回新承诺((解决、拒绝){
//这只是一个异步模拟
设置超时(()=>{
返回Math.random()>0.5?resolve():reject();
}, 2000);
});
}
//index.js
从“快递”进口快递;
从“checkForMinimalRequirements”导入{checkForMinimalRequirements};
允诺
.resolve(checkForMinimalRequirements())
.catch(()=>{
控制台错误(“缺少最低要求”);
过程。退出(1);
})
.然后(()=>{
常量app=express();
快速返回。请收听(/**/)
})
;

由于javascript的特性,在执行某些操作之前,始终可以运行异步任务

//checlForMinimalRequirements.js
功能检查表单最小需求(){
返回新承诺((解决、拒绝){
//这只是一个异步模拟
设置超时(()=>{
返回Math.random()>0.5?resolve():reject();
}, 2000);
});
}
//index.js
从“快递”进口快递;
从“checkForMinimalRequirements”导入{checkForMinimalRequirements};
允诺
.resolve(checkForMinimalRequirements())
.catch(()=>{
控制台错误(“缺少最低要求”);
过程。退出(1);
})
.然后(()=>{
常量app=express();
快速返回。请收听(/**/)
})
;

好吧,我认为这并不像express能够使用新实例或路由器中间件装载应用那样干净。这里的问题是,我的核心应用程序提供了这个引导功能,加上一些常规的非请求心跳检查和一些自主的清单/发现,而express似乎不适合这种自主工作。老实说,express并不真正关心你在应用程序定义之前需要模块(或者在应用程序定义之后,但我想它仍然应该在app.listen()之前)然后调用您所需的内容。我认为这并不像express能够使用新实例或路由器中间件装载应用程序那样干净。这里的问题是,我的核心应用程序提供了这个引导功能,加上一些常规的非请求心跳检查和一些自主的清单/发现,而express似乎没有坦白地说,express并不真正关心什么时候你需要在应用程序定义之前(或者在应用程序定义之后,但我想它仍然应该在app.listen()之前)创建一个模块并调用您所需的。这确实是我现在所做的,除了我使用async/await:DOh和顺便说一句,import语句是否在Node 8.x系列上本机工作,而不需要像babel等任何transpiler?这应该是一个不同的问题,但最后,不,
Node 8
不支持模块。是的,我知道,但正如您使用的ES风格模块导入:D非常感谢您的明确回答,并花时间回答我的问题:D@DrI这是一篇很好的文章:这确实是我现在所做的,除了我使用async/await:DOh和BTW之外,import语句是否在Node 8.x系列上本机工作,而不需要像babel等任何transpiler?这应该是一个不同的问题stion,但最后,不,
node 8
不支持模块。是的,我知道,但当您使用ES风格的模块导入时:D非常感谢您的明确回答,并花时间回答我的问题:D@DrI这是一篇制作精良的文章: