Nextjs 13-Fehler: Versuch, die Eigenschaft von undefiniert zu lesen (liest „Header')
P粉652495194
2023-08-31 16:47:14
<p>Ich habe ein Problem mit den Headern meines in Nextjs erstellten Post-API-Endpunkts. </p>
<p>Mein Endpunkt dient der Formularübermittlung und ich leite die Eingabe an meine E-Mail weiter. Mein aktueller Code kann die E-Mail senden und ich erhalte sie problemlos per E-Mail, aber jedes Mal, wenn ich eine Anfrage stelle, wird ein Fehler im Header zurückgegeben. </p>
<pre class="brush:php;toolbar:false;">import { NextResponse, NextRequest } from "next/server"
Nodemailer aus „Nodemailer“ importieren
Asynchrone Funktion exportieren POST(Anfrage: NextRequest, Antwort: NextResponse) {
const formData = Warten auf request.formData()
const emailValue = formData.get("email")
const messageValue = formData.get("message")
const numberValue = formData.get("phone_number")
if (!messageValue || !numberValue || !emailValue) {
return NextResponse.json({ Nachricht: "Bitte füllen Sie alle erforderlichen Felder aus!" }, { Status: 400 })
}
const transporter = nodemailer.createTransport({
Dienst: "Google Mail",
Authentifizierung: {
Benutzer: process.env.EMAIL,
pass:process.env.PASSWORD,
},
TLS: {
RejectUnauthorized: falsch,
},
})
const mailOptions = {
von: „${emailValue}“,
an: `${process.env.EMAIL}`,
Betreff: „Nachricht von der Kontaktseite ${numberValue} - ${emailValue}“,
Text: „${messageValue}“,
}
transporter.sendMail(mailOptions, (err, info) => {
if (irre) {
return NextResponse.json({ message: `${err}` }, { status: 500 })
}
return NextResponse.json({ Nachricht: "E-Mail erfolgreich gesendet!" }, { Status: 200 })
})
}</pre>
<p>Ich bin mir nicht sicher, was ich falsch gemacht habe. Ich habe in einem Thread darüber gelesen, dass NextResponse in der Return-Anweisung ausgeführt werden soll, aber selbst das hat nicht funktioniert. </p>
<p>Die Fehlermeldung, die ich erhalte: </p>
<pre class="brush:php;toolbar:false;"> - Fehler TypeError: Eigenschaft von undefiniert kann nicht gelesen werden (lesen von 'headers')
bei eval (webpack-internal:///(sc_server)/./node_modules/next/dist/server/future/route-modules/app-route/module.js:261:61)
bei process.processTicksAndRejections (node:internal/process/task_queues:95:5)</pre></p>
我会说问题与这个问题有关。
你最后两个
return NextResponse...
调用在transporter.sendMail()
回调内部,所以它们不会从POST()
函数中返回。利用Nodemailer的返回promise的能力,而不是使用回调函数...
另一种方法是将Nodemailer的回调转换为promise,尽管在我看来这样做不够简洁