Javascript NodeEmailer不使用Heroku部署

Javascript NodeEmailer不使用Heroku部署,javascript,node.js,reactjs,heroku,nodemailer,Javascript,Node.js,Reactjs,Heroku,Nodemailer,长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用Nodemailer。在本地主机上一切正常,但一旦我尝试从heroku部署的站点发送电子邮件,它就会失败,出现500内部错误 我已经用我的gmail帐户做了一些事情,允许它接受不安全的应用程序和其他东西 以下是我的NodeEmailer设置: app.post('/sendMail', (req, res) => { const { name, email, total } = req.body const name

长话短说,我想在我的应用程序中添加一个电子邮件系统,所以我决定使用Nodemailer。在本地主机上一切正常,但一旦我尝试从heroku部署的站点发送电子邮件,它就会失败,出现
500
内部错误

我已经用我的gmail帐户做了一些事情,允许它接受不安全的应用程序和其他东西

以下是我的NodeEmailer设置:

app.post('/sendMail', (req, res) => {
  const { name, email, total } = req.body
  const nameCheck = name
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ')

  const output = `
    <p>Thanks for shopping with us, ${nameCheck}.</p>
    <p>Your Total is $${total}</p>
    <hr />
    <p>Gabriel Pozo - React Cart Developer / Owner</p>
    <a href="https://reactshoppingcart1.herokuapp.com/">Shop</a>
  `

  const transporter = nodemailer.createTransport({
    service: 'gmail',
    port: 25,
    secure: false,
    auth: {
      user: 'beyondutraining@gmail.com', 
      pass
    },
    tls: { rejectUnauthorized: false }
  })

  const mailOptions = {
    from: '"Gabriel" <beyondutraining@gmail.com>',
    to: email,
    subject: 'Your Order',
    html: output
  }

  transporter.sendMail(mailOptions, (error, info) => {
    error ? res.sendStatus(500) : res.sendStatus(200)
  })
})
这就是我分配
env
变量的方式:

module.exports = {
  PASS: process.env.PASS
}

如果你还需要其他代码,请告诉我

您没有提到是否在Heroku项目上设置了环境变量。应该可以通过链接
https://dashboard.heroku.com/apps//settings
Config Vars
部分有一个
Reveal Config Vars
按钮-按下时,您可以添加键
PASS
,并给它适当的值。

您可以尝试将错误记录在三元数之前的行吗?这可能会提供一个堆栈跟踪和对发生了什么的描述wrong@PatNeedham
null
被返回如果您尝试类似于
let statusCode=error的操作会怎么样?500:200
然后
res.sendStatus(statusCode)
。可能是,即使
error
有一个空值,第一个案例仍在评估中。不,我们仍然会得到该错误。我意识到,当我这样编写代码时:
if(error)res.sendStatus(500)else res.sendStatus(200)
它会挂起而不是立即失败,因此可能与我的
sendMail
函数的编写方式有关。同样,如果这样写:
if(error)res.sendStatus(500)res.sendStatus(200)
它通过了,但没有发送电子邮件。你解决了这个问题吗?我也有同样的问题。要查看错误,请将heroko write放入终端,以寻址此代码“heroku logs--source app”的项目。是的,我已经在heroku仪表板上设置了它们
module.exports = {
  PASS: process.env.PASS
}