gpt4 book ai didi

javascript - 召唤依赖注入(inject)并调用模块内的方法/函数

转载 作者:行者123 更新时间:2023-12-01 01:15:23 25 4
gpt4 key购买 nike

预先感谢您的帮助。

我不确定如何执行以下操作。我有一个发送电子邮件的模块,并且使用 Summon.js 依赖注入(inject)将 Config 注入(inject)到模块中,但我需要使用 sendMail 方法并向其传递参数 mailOptions。下面是代码示例:

'use strict';

const nodemailer = require('nodemailer');
const ejs = require('ejs');
const fs = require('fs');



module.exports = function(Configs) {

// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: Configs.email.host,
port: Configs.email.port,
auth: {
user: Configs.email.user,
pass: Configs.email.pass
}
});

this.sendMail = function(mailOptions) {
mailOptions.to = Configs.mockEmail || mailOptions.to
mailOptions.from = Configs.email.user
return new Promise((resolve, reject) => {
if (mailOptions.template) {
ejs.renderFile('/../templates/' + mailOptions.template +
'.ejs', mailOptions.data, null, (err, html) => {
if (err) {
return reject(err)
}
resolve(html)
})
return
}
resolve()
}).then(html => {
mailOptions.html = html || mailOptions.html
return new Promise((resolve, reject) => {
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return reject(error)
}
resolve(info)
})
})
})
}

return this
}

然后,我想使用这个模块:

const EmailUtil = require('email')

async function foo() {
// Do something async with await.

const mailOptions = {...}
EmailUtils.sendMail(mailOption);
}

但是,它给了我错误:类型错误:EmailUtils.sendMail 不是函数

注意:我可以删除 module.export = function(Configs) 但它们不会很好,因为我需要对配置文件的路径进行硬编码,并且每个环境都有多个配置文件。然后,我希望能够在从另一个模块调用 sendMail 时保留 Summon.js 依赖注入(inject)。谢谢

有什么想法吗?谢谢!

最佳答案

由于您要导出一个函数,因此您需要在需要模块后实际调用它:

const EmailUtil = require('email')

async function foo() {
// Do something async with await.

const mailOptions = {...}
EmailUtil().sendMail(mailOption);
}

关于javascript - 召唤依赖注入(inject)并调用模块内的方法/函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54811134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com