创建一个nodemailer测试帐户并将其保存在全局模块中

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

我有一个nodejs应用程序。其中一个模块用于邮件传输器。我想在每次启动时创建一个邮件测试配置并将其存储(在

global
中),以便可以重复使用。

但是,在我的应用程序运行期间,每次模块接触该模块时,

global.dev_mail_settings
始终是未定义的,我会得到一个全新的 testAccount。

我读过的所有文档都说

global
应该保留该值。我做错了什么?

我怎样才能让它做我想做的事?

import nodemailer from 'nodemailer'

const sendmailSettings = {
    // prod
}

let actualSettings = null

if (process.env.NODE_ENV === 'development') {
    if (!global.mail_settings) {            // <----- always undefined, even when set previously
        const account = await nodemailer.createTestAccount()

        const testAcount = {
            host: account.smtp.host,
            port: account.smtp.port,
            secure: account.smtp.secure,
            auth: {
                user: account.user,
                pass: account.pass
            }
        }
        global.mail_settings = testAcount  // <----- assignment ok
        console.log('==========================================================')
        console.log('Using mail credentials: ' + stringifyPretty(global.mail_settings))
        console.log('==========================================================')

    }
    actualSettings = global.mail_settings   // <----- usage ok

} else {
    actualSettings = sendmailSettings
}

const transporter = nodemailer.createTransport(actualSettings)

export default transporter
node.js global nodemailer
1个回答
0
投票

当应用程序在

NODE_ENV === 'development'
中运行时,每个调用都是新的调用。
global
仅在运行于
NODE_ENV === 'production'
时才会被记住。

© www.soinside.com 2019 - 2024. All rights reserved.