Node Js:如何在服务器的开头执行异步函数

问题描述 投票:1回答:1

我想从导出的文件中运行一个函数作为应用程序中的第一个函数(异步方式)。

运行服务器时必须首先执行此功能,并询问我们是否是本地或生产环境!

该函数在配置文件中:

//config/config.js:

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
module.exports= function(next) {
    console.log("call fi,n");
    rl.question('Run in production environnement (Y|N) ?', (answer) => {
        if(answer === "Y")
            process.env.NODE_ENV = 'prod';
        else
            process.env.NODE_ENV = 'dev';
        rl.close();
        console.log("asnwerere");
        next();
    },next);

}


//app.js:
app.use(function(next){
    require('./config/config')(next);
}); 

现在第一个问题是函数没有在服务器的启动时运行但是在接收HTTP请求时。

那么如何使这个函数以异步方式运行的问题:作为应用程序的第一个函数(必须阻塞服务器,直到我引入此函数中提到的命令行)?

javascript node.js callback next
1个回答
0
投票

这个功能签名

app.use(function(next){...});

是错的。它应该是:

app.use(function(req, res, next){...});

所以,因为你的函数参数错误,你使用了错误的东西作为next,当有人试图调用它时会出错。

所以,在你的代码中改变这个:

//app.js:
app.use(function(next){
    require('./config/config')(next);
}); 

对此:

//app.js:
app.use(function(req, res, next){
    require('./config/config')(next);
});    
© www.soinside.com 2019 - 2024. All rights reserved.