Heroku error: Cannot find module 'nodemailer-smtp-transport'

Heroku error: Cannot find module 'nodemailer-smtp-transport'

我已经尝试找到这个问题的答案,但即使我将响应用于类似问题,它也不起作用。

完整登录 heroku

这是我的 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");
 });

我的代码中是否有任何我遗漏的内容,或者是什么导致我的服务器无法 运行?

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

(...) Boot timeout

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

在这种情况下,它找不到模块 nodemailer-smtp-transport,因此您需要做的就是在 package.json 文件中将其作为 dependencies 的 属性 提供,并且heroku 应该处理剩下的事情。

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

即使您的应用程序在您的本地计算机上运行良好,也不能保证它在 heroku 上也会 运行。

万一 heroku 给你一个错误 'module not found',你应该首先检查你的 package.json 文件。

解决方案

如果您发现您的模块在 package.json 中不作为依赖项存在,请按照给定的步骤进行操作

npm install <your missing package>
git add .
git commit -m "my fix"
git push heroku master

注意:您可以根据您的分支更新推送命令,在我的例子中是master。