我有一个非常简单的单页node.js应用程序,它使用nodemailer通过电子邮件将任何表单数据通过电子邮件发送到我的收件箱。
我的index.js文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'myemail@gmail.com',
pass: 'mypassword'
}
});
app.use(express.static('public')); //Folder with static pages
app.get('', function (req, res) {
res.sendFile(__dirname + "/");
})
app.post('/', function (req, res) {
response = {
name: req.body.name,
email: req.body.email,
message: req.body.message
};
var mailClient = {
from: 'myemail@gmail.com',
to: 'myemail@gmail.com',
subject: `Message from ${response.name}`,
text: `Name: ${response.name}\nEmail: ${response.email}\nMessage:${response.message}`
};
transporter.sendMail(mailClient, function (error, info) {
if (error) {
console.log(error);
} else {
res.redirect("/success.html");
}
});
})
var server = app.listen(80, function () {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
该应用在npm start
本地完美无缺。但是,当我部署到Firebase时,似乎nodemailer部分不起作用。页面加载我的静态文件,但当我尝试通过表单提交任何内容时,页面只是刷新(就像你有一个带有HTML的提交按钮),而不是重定向到我的成功页面和电子邮件数据。
我已将应用程序最小化为仅部署到Firebase时保留上述问题的简单表单,并将其上传到github:https://github.com/KadinZ/FirebaseProblem。我冒昧地创建了一个在上传的应用程序中使用的测试gmail帐户,其中包含电子邮件,nodemailersampleemail @ gmail.com和密码,foopassword。因此,如果有人想下载回购并测试它,该应用程序应该工作。
我还将这个最小化的应用程序上传到firebase:https://portfolio-fe3eb.firebaseapp.com/,以显示正在发生的问题。
额外信息:我正在使用Firebase的火焰计划,而且我没有收到错误日志。
发生了什么事?