Включение почтового пистолета в контроллер - PullRequest
0 голосов
/ 14 апреля 2020

Я пытался использовать почту. js для ответа на запрос get, и когда я перемещаю его из моего 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);
   }); 
});

, но когда я пытаюсь добавить его в файл контроллера в качестве функции, я получаю необработанное обещание TypeError, говорящее mailgun is not a function, поэтому я убедился, что оно завернуто в попробуй / поймай вот так ...

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: «Что-то пошло не так, не удалось запросить отзыв.»

Halp pls.

...