javascript - 将 mailgun 合并到控制器中
问题描述
我一直在尝试使用mailgun。Node.js 响应一个获取请求,当我将它从我的routes
文件中移出并进入控制器函数时,我知道我遗漏了一些东西。当我提出请求时它工作正常
const mailgun = require('mailgun.js');
const router = express.Router();
router.get('/', (req, res) => {
const API_KEY = 'secret';
const DOMAIN = 'secretdomain';
const mg= mailgun({ apiKey: API_KEY, domain: DOMAIN });
const data = {
from: 'bob@thebuilder.com',
to: 'barney@rubble.com',
subject: 'Whats up doc',
template: "reqfeedback",
};
mg.messages().send(data, function (error, body) {
if (error) {
console.log(error);
}
console.log(body);
});
});
但是当我尝试将它作为一个函数添加到我的控制器文件中时,我得到一个未处理的 Promise TypeError 说mailgun is not a function
所以我确保它像这样包装在一个 try/catch 中......
controller.js
const mongoose = require('mongoose');
const mailgun = require('mailgun.js');
const sendEmail = async(req,res,next) => {
try{
const API_KEY = 'secret';
const DOMAIN = 'secretdomain';
const mg= mailgun({ apiKey: API_KEY, domain: DOMAIN });
const data = {
from: 'bob@thebuilder.com',
to: 'barney@rubble.com',
subject: 'Whats up doc',
template: "reqfeedback",
};
await mg.messages().send(data, function (error, body) {
if (error) {
console.log(error);
}
console.log(body);
});
catch (err) {
const error = new HttpError(
'Something went wrong, could not send email.',
500
);
return next(error);
}
res.status(200).json({ message: 'email sent' });
};
exports.sendEmail = sendEmail;
我添加了这条路线:
routes.js
const controllers = require('../controllers/controllers');
const router = express.Router();
const express = require('express');
router.get('/sendEmail', controllers.sendEmail);
module.exports = router;
但是当我发送获取请求时,我不断收到 500 错误“消息”:“出了点问题,无法请求反馈。”
哈尔普请。
解决方案
推荐阅读
- reactjs - Next.js 滚动条导航栏
- html - 为什么在运行相同的 vba 宏时,我的新计算机上出现运行时错误,而我的 2 台旧计算机上却没有?
- vba - 使用 vba 代码更新访问后端架构
- java - 这个界面有什么问题?
- r - 更改背景颜色 R posterdown
- python - 如何获取特定时间段的推文抓取?
- postgresql - Postgres concurrent transactions unexpected issue
- python - 如何通过 python API 使用 CPLEX 为基于 MILP 的 VRP 问题提供初始解决方案?
- python - 将识别列表中的空字符串并在那里打印标记/符号的函数(Python Tic-Tac-Toe)
- c# - C# 我们可以通过使用别名来使用异步吗?