我想从导出的文件中运行一个函数作为应用程序中的第一个函数(异步方式)。
此功能必须在运行服务器时首先执行,并询问我们它是否是本地或生产环境!
该功能在配置文件中:
//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请求时。
那么如何使这个函数以异步方式运行的问题:作为应用程序的第一个函数(必须阻塞服务器,直到我引入此函数中提到的命令行)?
答案 0 :(得分: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);
});