module.exports 异步等待函数值的最佳方法

best way to module.exports a value of an async await function

所以我只是第一次阅读 nodemailer 文档以及他们在网站上的示例

"use strict";
const nodemailer = require("nodemailer");

// async..await is not allowed in global scope, must use a wrapper
async function main() {
  // Generate test SMTP service account from ethereal.email
  // Only needed if you don't have a real mail account for testing
  let testAccount = await nodemailer.createTestAccount();

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
      user: testAccount.user, // generated ethereal user
      pass: testAccount.pass, // generated ethereal password
    },
  });
   
  return transporter;
}

main().catch(console.error);

但我想将该编码放在一个文件夹中,并且只导出 transporter 以便能够在我的路线文件中使用它。

最好的导出方式是什么,而不必每次都在使用前 运行 等待?

如果是异步获取的值,则无法导出最终值(当前版本node.js)。在导出时,该值尚不清楚,所以您真正能做的就是导出承诺,任何想要该值的人都必须在承诺上使用 await.then() 才能获得值。

有人提议支持异步导出,这样加载程序本身就会阻塞并等待异步值(使此类问题更容易解决),但这还不能使用。

我偶尔做的另一件事是在获得一些异步值并将其放入可以同步检索的变量中之前不启动应用程序的内容。如果您的代码是一个服务器,那通常涉及在异步值可用并填充到变量中之前不启动服务器。因此,在异步值在该变量中之前不会出现任何请求处理程序,然后它基本上可以同步使用。