我正在一个node.js网站上,我们正在使用Heroku托管它。但是我有一个问题。每当我从网站提交表单时,它都会正常重定向,但不会显示指定文件,而只会显示“内部服务器错误”。但是,每当我在域后的网址中添加“ / contact”时,它就可以正常工作。任何人都知道问题出在哪里吗?非常感谢。
Index.js文件(节点js文件和主js文件):
const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000
var stripe = require("stripe")("sk_test_bOSMKplPuyuTYFN6somV2Ywf00be7BKbS7");
var hbs = require("hbs");
var bodyParser = require("body-parser");
var app = express();
app.use(express.static(path.join(__dirname, 'public')))
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'hbs')
app.get('/', (req, res) => res.render('pages/index'))
app.get('/banner', (req, res) => res.render('pages/banner'))
email = '';
message = '';
subject = '';
app.post('/contact', (req, res) => {
if(req.body.email != null){
email = req.body.email;
}
if(req.body.subject != null){
subject = req.body.subject;
}
if(req.body.message != null){
message = req.body.message;
}
if(email != '' && message != '' && subject != ''){
sendEmailToBusinessContact(email, subject, message);
res.redirect('/#contact')
}
});
主要的html代码(index.hbs):
<form action="/contact" method="post">
<div class="contact-input-container">
<div>
<input name="email" class="contact-input contact-email" type="email" placeholder="name@gmail.com" autocomplete="off" required>
</div>
<div>
<input name="subject" class="contact-input contact-subject" type="text" placeholder="subject.." autocomplete="off" required>
</div>
<div>
<textarea name="message" class="contact-input contact-message" type="text" placeholder="message.." required></textarea>
</div>
</div>
<button type="submit" class="contact-btn">Send</button>
</form>