API端点404在生产的NextJs 14上找不到,但在Local

问题描述 投票:0回答:0
中有以下内容

<Formik initialValues={{ fullName: "", phoneNumber: "", email: "", message: "", }} validationSchema={Yup.object({ fullName: Yup.string().required("Required"), phoneNumber: Yup.string().required("Required"), email: Yup.string() .email("Invalid email address") .required("Required"), message: Yup.string().required("Required"), })} onSubmit={async (values, { setSubmitting, resetForm }) => { try { const response = await fetch("/api/sendEmail", { // Adjusted path here method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(values), }); if (!response.ok) { throw new Error("Failed to send email"); } setShowSuccessMessage(true); setTimeout(() => { setShowSuccessMessage(false); }, 5000); resetForm(); } catch (error) { console.error("Error sending email:", error); } finally { setSubmitting(false); } }} > {(formik) => ( <Form > <div className="pb-3"> <Field type="text" name="fullName" placeholder="Full Name" className="form-input space-y-2 pt-15px lg:pt-20px w-full h-12 px-5 py-10px placeholder-white text-white" style={{ backgroundColor: '#0c3863',border: '1.5px solid white'}} /> <ErrorMessage name="fullName" component="div" className="text-red-600" style={{color: "red"}} /> </div> <div className="pb-3"> <Field type="text" name="phoneNumber" placeholder="Phone Number" className="form-input space-y-2 pt-15px lg:pt-20px w-full h-12 px-5 py-10px placeholder-white text-white " style={{ backgroundColor: '#0c3863',border: '1.5px solid white'}} /> <ErrorMessage name="phoneNumber" component="div" className="text-red-600" style={{color: "red"}} /> </div> <div className="pb-3"> <Field type="email" name="email" placeholder="Email" className="form-input space-y-2 pt-10px lg:pt-15px w-full h-12 px-5 py-10px placeholder-white text-white" style={{ backgroundColor: '#0c3863',border: '1.5px solid white'}} /> <ErrorMessage name="email" component="div" className="text-red-600" style={{color: "red"}} /> </div> <div className="pb-3"> <Field as="textarea" name="message" placeholder="Message" className="form-textarea w-full pt-15px lg:pt-20px placeholder-white px-5 py-30px text-white" style={{ backgroundColor: '#0c3863',border: '1.5px solid white'}} /> <ErrorMessage name="message" component="div" className="text-red-600" style={{color: "red"}} /> </div> <Button type="submit" disabled={formik.isSubmitting} className="btn" size={"large"} colorTheme="blue1" uppercase > Enquire now </Button> </Form> )} </Formik> {showSuccessMessage && ( <div className="success-message flex items-center text-white text-sm font-bold py-3" > Message sent successfully! </div> )} </div>

在我的页面/API中,我有sendemail.ts file

现在我正在使用mailtrap.

import { NextApiRequest, NextApiResponse } from 'next';
import nodemailer from 'nodemailer';

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  if (req.method !== 'POST') {
    return res.status(405).end(); // Method Not Allowed
  }

  try {
    const { fullName, phoneNumber, email, message } = req.body;

    const transporter = nodemailer.createTransport({
      host: 'sandbox.smtp.mailtrap.io',
      port: 2525,
      auth: {
        
        user: '543c2217cf0f8b',
        pass: '5rthae759cd4c0',
      },
    });

    await transporter.sendMail({
      from: '[email protected]',
      to: '[email protected]',
      subject: 'New contact form submission',
      html: `
        <p>Full Name: ${fullName}</p>
        <p>Phone Number: ${phoneNumber}</p>
        <p>Email: ${email}</p>
        <p>Message: ${message}</p>
      `,
    });

    res.status(200).json({ message: 'Email sent successfully' });
  } catch (error) {
    console.error('Error sending email:', error);
    res.status(500).json({ error: 'An error occurred while sending the email' });
  }
}

当我在本地测试时,它可以完美地完成表单验证并发送电子邮件。

我在我的实时服务器上没有任何更改。

但是,每当我试图将其转移到我的生产中,它都会给我

mydomain.com/api/sendEmail not found.

由于我是Nectjs的新手,我正在努力寻找问题在哪里...

首先,您可以提供您遇到的错误,而我的猜测是文件名,请尝试在生产服务器上进行仔细检查。

TROTY测试如果使用Postman存在终点,并且如果不是终点,则可能只是文件名[sendemail.ts]。


您找到解决方案吗?有同样的问题。

reactjs typescript next.js
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.