我有一个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_ENV === 'development'
中运行时,每个调用都是新的调用。 global
仅在运行于 NODE_ENV === 'production'
时才会被记住。