防止进程在 Node JS 应用程序上持续运行

时间:2021-05-15 08:58:17

标签: node.js nodemailer

我最近使用 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"));

0 个答案:

没有答案