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。
我已经尝试找到这个问题的答案,但即使我将响应用于类似问题,它也不起作用。
完整登录 heroku
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。