Heroku错误:无法找到模块'nodemailer-smtp-transport'

时间:2018-01-23 07:27:13

标签: javascript node.js heroku package.json nodemailer

我已经尝试找到这个问题的答案,但即使我对类似问题使用响应它也行不通。

完整登录heroku enter image description here

enter image description here 这是我的node.js代码

var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require("nodemailer");
var smtpTransport = require('nodemailer-smtp-transport');

app.listen(process.env.PORT || 3000,function() {
    console.log("App is running" );
});




app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json());


/*app.listen(port, function() {
    console.log("App is running on port " + port);
});*/

var smtpTransport = nodemailer.createTransport(smtpTransport({
  service: 'Gmail',
  auth: {
    user: 'naomikudren@gmail.com',
    pass: '###'
  }
}));

app.post('/send-email', function(req, res) {
    var mailOptions = {
        from: '"Naomi" <naomikudren@gmail.com>', // sender address
        to: "naomikudren@gmail.com", // list of receivers
        subject: 'Request ', // Subject line
        text: "From: " + req.body.from + " To: " + req.body.to + " Date: " + req.body.date + " Time: " + req.body.time // plaintext body

    };
        smtpTransport.sendMail(mailOptions, function(error, info) {
         if (error) {
             return console.log(error);
         }
         console.log('Message sent: ' + info.response);
     });

     res.redirect("/index.html");
 });

我的代码中是否有我遗漏的内容或可能导致我的服务器无法运行的内容?

1 个答案:

答案 0 :(得分:0)

正如我之前在评论中指出的那样,您提到的错误只是之前遇到的错误阻止您的应用启动的结果。

  

(...)启动超时

这基本上意味着,由于不同的原因,启动应用程序的过程已经超时。

在这种情况下,它找不到模块nodemailer-smtp-transport,所以您需要做的就是在dependencies文件中将其作为package.json的属性提供,而heroku应该处理其余部分。

{
    ...
    "dependencies": {
        ...
        "nodemailer-smtp-transport": "^2.7.4",
        ...
    }
    ...
}