Javascript nodejs-mg中的Mailgun不是一个函数

Javascript nodejs-mg中的Mailgun不是一个函数,javascript,node.js,mailgun,Javascript,Node.js,Mailgun,我一直在尝试使用邮件枪与nodemailer的电子邮件服务 这是我的auth.js文件的外观: const bcrypt=require(“bcryptjs”); const User=require(“../models/User”); var nodeEmailer=require(“nodeEmailer”); var mg=要求(“nodemailer-mailgun传输”); var auth={ 认证:{ api_键:“*****”, 域:“xyz” }, }; var nodeEm

我一直在尝试使用邮件枪与nodemailer的电子邮件服务

这是我的auth.js文件的外观:

const bcrypt=require(“bcryptjs”);
const User=require(“../models/User”);
var nodeEmailer=require(“nodeEmailer”);
var mg=要求(“nodemailer-mailgun传输”);
var auth={
认证:{
api_键:“*****”,
域:“xyz”
},
};
var nodeEmailerMailgun=nodeEmailer.createTransport(mg(auth));
exports.getLogin=(请求、恢复、下一步)=>{
let message=req.flash(“错误”);
如果(message.length>0){
消息=消息[0];
}否则{
消息=null;
}
控制台日志(请求闪存(“错误”);
res.render(“身份验证/登录”{
I认证:错误,
错误消息:消息,
});
};
exports.getsignup=(请求、回复、下一步)=>{
res.render(“授权/注册”{
I认证:错误,
});
};
exports.postLogin=(请求、恢复、下一步)=>{
const email=req.body.email;
const password=req.body.password;
User.findOne({email:email})
。然后((用户)=>{
如果(!用户){
请求闪存(“错误”、“无效电子邮件或密码”);
返回res.redirect(“/login”);
}
bcrypt
.比较(密码,用户.密码)
.然后((doMatch)=>{
if(doMatch){
req.session.isLoggedIn=true;
req.session.user=用户;
返回请求会话保存((错误)=>{
控制台日志(err);
res.redirect(“/”);
});
}
请求闪存(“错误”、“无效电子邮件或密码”);
res.redirect(“/login”);
})
.catch((错误)=>{
控制台日志(err);
res.redirect(“/login”);
});
})
.catch((err)=>console.log(err));
};
exports.postLogout=(请求、恢复、下一步)=>{
请求会话销毁((错误)=>{
控制台日志(err);
res.redirect(“/”);
});
};
exports.postsignup=(请求、回复、下一步)=>{
const email=req.body.email;
const password=req.body.password;
User.findOne({email:email})
。然后((userDoc)=>{
if(userDoc){
返回res.redirect(“/signup”);
}
返回bcrypt
.hash(密码,12)
。然后((hashedPassword)=>{
const user=新用户({
电邮:电邮,,
密码:hashedPassword,
购物车:{items:[]},
});
返回user.save();
})
。然后((结果)=>{
诺德迈尔根
.sendMail({
来自:email@example.com",
至:nishitsadual@gmail.com",
答复:“答复-to@example.com",
主题:“邮枪运输”,
文本:“这是文本内容”,
})
。然后((信息)=>{
控制台日志(“成功”);
})
.catch((错误)=>{
log(“出了点问题”);
});
res.redirect(“/login”);
});
})
.catch((错误)=>{
控制台日志(err);
});
};
但是,我得到一个错误,
mg不是一个函数
。我的依赖项如下所示:

$npm ls--depth=0
+-- bcryptjs@2.4.3
+--身体-parser@1.19.0
+--连接-flash@0.1.1
+--连接会话-sequelize@7.0.1
+-- csrf@3.1.0
+-- csurf@1.11.0
+-- ejs@3.1.3
+-- express@4.17.1
+--快车-session@1.17.1
+--快速会议-sequelize@2.3.0
+--邮枪导航器-transport@1.4.0
+-- mysql2@2.1.0
+-- nodemailer@6.4.11
+-- request@2.88.2
+-- save@2.4.0
+-- sequelize@6.3.1
我的例子基本上是一个例子

由于某些原因,要求使用
节点电子邮件收发邮件枪传输
无法按预期工作


任何帮助都将不胜感激。

在快速查看您的npm转储后,您的邮枪软件包似乎出于某种原因被称为
mailgun-nodemailer-transport
,而不是
nodemailer-mailgun-transport

我会尝试用以下方法更改线路:

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


您能否在项目的目录中执行以下命令:
npmls--depth=0
并共享输出?假设您没有全局安装依赖项bcryptjs@2.4.3+--主体-parser@1.19.0+--连接-flash@0.1.1+--连接会话-sequelize@7.0.1 +-- csrf@3.1.0 +-- csurf@1.11.0 +-- ejs@3.1.3 +-- express@4.17.1+--快车-session@1.17.1+--快速会话-sequelize@2.3.0+--mailgun nodeEmailer-transport@1.4.0 +-- mysql2@2.1.0 +-- nodemailer@6.4.11 +-- request@2.88.2 +-- save@2.4.0 `-- sequelize@6.3.1So,看看你的邮枪包是如何被npm:mailgun nodemailer transport调用的。因此,不是
var mg=require(“nodemailer-mailgun传输”)我会尝试
var mg=require(“mailgun节点电子邮件传输”)
var mg = require("mailgun-nodemailer-transport");