Node.js Nodejs不等待在app.js中首先执行异步函数
我想从AWS secrets中检索我的JWT密钥,然后运行passport.js加载密钥Node.js Nodejs不等待在app.js中首先执行异步函数,node.js,Node.js,我想从AWS secrets中检索我的JWT密钥,然后运行passport.js加载密钥 // app.js // Retrieve secrets from AWS (async () => { console.log("Retrieving AWS Secrets"); await awsSecretManager.getAllSecrets(); })(); require('./components/auth/passport.js'); 但是,在g
// app.js
// Retrieve secrets from AWS
(async () => {
console.log("Retrieving AWS Secrets");
await awsSecretManager.getAllSecrets();
})();
require('./components/auth/passport.js');
但是,在getAllSecrets函数完成之前,passport.js已经执行。可以验证,因为文件中有我写的日志
const getAllSecrets = async () => {
try {
// DB Prod/Dev Secret
const dbProdSecrets = await getSecretValue("db");
process.env.RDS_HOST = dbProdSecrets.SecretString.host;
process.env.RDS_USER = dbProdSecrets.SecretString.username
process.env.RDS_PASSWORD = dbProdSecrets.SecretString.password
process.env.RDS_DATABASE = "database"
// JWT Secret
const jwtSecret = await getSecretValue("jwt");
process.env.JWT_SECRET = jwtSecret.SecretString.JWT_SECRET;
} catch (err) {
console.log(err);
}
}
一旦运行app.js,立即调用的函数表达式就会运行,它会在后台获取所有机密信息,而passport文件也会运行。你需要等待。因此,在获取机密后放置所需文件
// app.js
// Retrieve secrets from AWS
(async () => {
console.log("Retrieving AWS Secrets");
await awsSecretManager.getAllSecrets();
require('./components/auth/passport.js');
})();
我宁愿等到一切都完成后再启动服务器
const app = require('express')();
const server = async () => {
// fetching secrets from aws secrets
await awsSecretManager.getAllSecrets();
// on fetching success
// ... doing other imports
require('./components/auth/passport.js');
// configuring my server
app.get('/', (req,res)=>{
return res.send("hello");
});
// start the server finally
app.listen(5000, () => console.log("okk"));
};
server();
异步函数在synchron内部起作用,但不适用于外部世界Wait不会首先阻止异步函数异步。await只在async内部工作,而不是全局工作,因此解决方案是重写代码以仅在getAllSecrets完成后加载passport