代码之家  ›  专栏  ›  技术社区  ›  Naomi

Heroku错误:找不到模块“NodeEmailer smtp传输”

  •  0
  • Naomi  · 技术社区  · 7 年前

    我已经试图找到这个问题的答案,但即使我对类似问题使用响应,也不会奏效。

    完全登录heroku enter image description here

    enter image description here 这是我的节点。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");
     });
    

    我的代码中是否缺少任何内容,或者是什么原因导致我的服务器无法运行?

    2 回复  |  直到 6 年前
        1
  •  1
  •   wscourge Kiran Balakrishnan    7 年前

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

    (...) 启动超时

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

    在这种情况下,它找不到模块 nodemailer-smtp-transport ,所以您只需将其作为的属性提供 dependencies 在您的 package.json file和heroku应该负责剩下的事情。

    {
        ...
        "dependencies": {
            ...
            "nodemailer-smtp-transport": "^2.7.4",
            ...
        }
        ...
    }
    
        2
  •  0
  •   Yousha Bin Arif    3 年前

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

    如果heroku给您一个“找不到模块”的错误,您首先应该检查 包裹json 文件

    解决方案

    如果您发现您的模块在包中不作为依赖项存在。json,而不是遵循给定的步骤

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

    注意:您可以根据您的分支更新push命令,在我的情况下,它是master。