簡體   English   中英

nodejs中的Mailgun-mg不是function

[英]Mailgun in nodejs - mg is not a function

我一直在嘗試將郵件槍與 nodemailer 一起用於 email 服務。

這是我的 auth.js 文件的樣子:

const bcrypt = require("bcryptjs");
const User = require("../models/user");
var nodemailer = require("nodemailer");
var mg = require("nodemailer-mailgun-transport");

var auth = {
  auth: {
    api_key: "****",
    domain:"xyz"
  
  },
};

var nodemailerMailgun = nodemailer.createTransport(mg(auth));

exports.getLogin = (req, res, next) => {
  let message = req.flash("error");
  if (message.length > 0) {
    message = message[0];
  } else {
    message = null;
  }
  console.log(req.flash("error"));
  res.render("auth/login", {
    isAuthenticated: false,
    errorMessage: message,
  });
};

exports.getsignup = (req, res, next) => {
  res.render("auth/signup", {
    isAuthenticated: false,
  });
};

exports.postLogin = (req, res, next) => {
  const email = req.body.email;
  const password = req.body.password;
  User.findOne({ email: email })
    .then((user) => {
      if (!user) {
        req.flash("error", "Invalid email or password.");
        return res.redirect("/login");
      }
      bcrypt
        .compare(password, user.password)
        .then((doMatch) => {
          if (doMatch) {
            req.session.isLoggedIn = true;
            req.session.user = user;
            return req.session.save((err) => {
              console.log(err);
              res.redirect("/");
            });
          }
          req.flash("error", "Invalid email or password.");
          res.redirect("/login");
        })
        .catch((err) => {
          console.log(err);
          res.redirect("/login");
        });
    })
    .catch((err) => console.log(err));
};

exports.postLogout = (req, res, next) => {
  req.session.destroy((err) => {
    console.log(err);
    res.redirect("/");
  });
};

exports.postsignup = (req, res, next) => {
  const email = req.body.email;
  const password = req.body.password;

  User.findOne({ email: email })
    .then((userDoc) => {
      if (userDoc) {
        return res.redirect("/signup");
      }
      return bcrypt
        .hash(password, 12)
        .then((hashedPassword) => {
          const user = new User({
            email: email,
            password: hashedPassword,
            cart: { items: [] },
          });
          return user.save();
        })
        .then((result) => {
          nodemailerMailgun
            .sendMail({
              from: "email@example.com",
              to: "nishitsadual@gmail.com",
              replyTo: "reply-to@example.com",
              subject: "Mailgun Transport",
              text: "This is text content",
            })
            .then((info) => {
              console.log("SUCCESS");
            })
            .catch((error) => {
              console.log("Something is wrong");
            });

          res.redirect("/login");
        });
    })
    .catch((err) => {
      console.log(err);
    });
};

但是,我收到一個錯誤,即mg is not a function 我的依賴項如下所示:

$ npm ls --depth=0
+-- bcryptjs@2.4.3
+-- body-parser@1.19.0
+-- connect-flash@0.1.1
+-- connect-session-sequelize@7.0.1
+-- csrf@3.1.0
+-- csurf@1.11.0
+-- ejs@3.1.3
+-- express@4.17.1
+-- express-session@1.17.1
+-- express-session-sequelize@2.3.0
+-- mailgun-nodemailer-transport@1.4.0
+-- mysql2@2.1.0
+-- nodemailer@6.4.11
+-- request@2.88.2
+-- save@2.4.0
+-- sequelize@6.3.1

我的示例基本上是官方快速入門示例的復制粘貼

出於某種原因,要求nodemailer-mailgun-transport無法按預期工作。

任何幫助,將不勝感激。

在快速查看您的 npm 轉儲后,您的 mailgun package 似乎由於某種原因被稱為mailgun-nodemailer-transport ,而不是nodemailer-mailgun-transport

我會嘗試更改線路:

var mg = require("nodemailer-mailgun-transport");

var mg = require("mailgun-nodemailer-transport");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM