我最近使用 Namecheap 在共享主机上部署了我的第一个 Node JS 应用程序。该应用程序本质上只是一个带有集成联系表的静态网站,因此没有什么特别之处。
不幸的是,该网站每隔几天就会崩溃,因为它达到了网络主机设置的最大后台进程数。根据托管支持,该问题与 Node JS 进程不间断运行并因此累积直到达到极限有关。有谁知道如何解决这个问题?
非常感谢,附上我的代码以供参考。
const express = require("express");
const app = express();
const path = require("path");
const nodemailer = require("nodemailer");
const Joi = require("joi");
app.use(express.static("public"));
app.use(express.json());
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "public", "index.html"));
});
app.get("/about", (req, res) => {
res.sendFile(path.join(__dirname, "public", "about.html"));
});
app.get("/projects", (req, res) => {
res.sendFile(path.join(__dirname, "public", "projects.html"));
});
app.get("/contact", (req, res) => {
res.sendFile(path.join(__dirname, "public", "contact.html"));
});
app.post("/", (req, res) => {
const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: "example.abc@gmail.com",
pass: "example.xyz"
}
});
const data = req.body;
console.log(data);
const schema = Joi.object({
name: Joi.string().required(),
email: Joi.string().email().required(),
subject: Joi.string().required(),
message: Joi.string().required()
});
const validatedData = schema.validate(data);
console.log(validatedData);
if (validatedData.error) {
return res.json({ status: "error" });
} else {
const mailOptions = {
from: data.email,
to: "example.abc@gmail.com",
subject: `${data.name}: ${data.subject}`,
text: data.message + `\n\nEmail Address: ${data.email}`
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return res.json({ status: "error" });
} else {
return res.json({ status: "success" });
}
})
}
});
app.use((req, res) => {
res.redirect("/");
});
app.listen(() => console.log("Connection open"));