Nextjs 13 ralat: Percubaan untuk membaca sifat yang tidak ditentukan (membaca 'header')
P粉652495194
2023-08-31 16:47:14
<p>Saya menghadapi masalah dengan pengepala titik akhir API catatan saya yang dibuat dalam Nextjs. </p>
<p>Titik akhir saya adalah untuk penyerahan borang dan saya memajukan input ke e-mel saya. Kod semasa saya boleh menghantar e-mel dan saya menerimanya dengan baik dalam e-mel saya, tetapi setiap kali saya membuat permintaan ia mengembalikan ralat dalam pengepala. </p>
<pre class="brush:php;toolbar:false;">import { NextResponse, NextRequest } daripada "next/server"
import nodemailer daripada "nodemailer"
eksport fungsi async POST(permintaan: NextRequest, respons: NextResponse) {
const formData = menunggu permintaan.formData()
const emailValue = formData.get("e-mel")
const messageValue = formData.get("mesej")
const numberValue = formData.get("nombor_telefon")
jika (!messageValue || !numberValue || !emailValue) {
kembalikan NextResponse.json({ mesej: "Sila isikan semua medan yang diperlukan!" }, { status: 400 })
}
pengangkut const = nodemailer.createTransport({
perkhidmatan: "gmail",
pengesahan: {
pengguna: process.env.EMAIL,
pas: process.env.PASSWORD,
},
tls: {
menolakTidak dibenarkan: palsu,
},
})
const mailOptions = {
daripada: `${emailValue}`,
kepada: `${process.env.EMAIL}`,
subjek: `Mesej daripada halaman hubungi saya ${numberValue} - ${emailValue} `,
teks: `${messageValue}`,
}
transporter.sendMail(mailOptions, (err, info) => {
jika (err) {
kembalikan NextResponse.json({ mesej: `${err}` }, { status: 500 })
}
kembalikan NextResponse.json({ mesej: "E-mel berjaya dihantar!" }, { status: 200 })
})
}</pre>
<p>Saya tidak pasti apa salah saya. Saya membaca dalam benang tentang melakukan NextResponse dalam penyata pulangan, tetapi itu tidak berjaya. </p>
<p>Mesej ralat yang saya dapat: </p>
<pre class="brush:php;toolbar:false;"> - Ralat JenisRalat: Tidak dapat membaca sifat yang tidak ditentukan (membaca 'header')
di eval (webpack-internal:///(sc_server)/./node_modules/next/dist/server/future/route-modules/app-route/module.js:261:61)
di process.processTicksAndRejections (node:internal/process/task_queues:95:5)</pre></p>
Saya akan mengatakan masalah itu berkaitan dengan soalan ini.
Kembalikan dalam dua
return NextResponse...
调用在transporter.sendMail()
回调内部,所以它们不会从POST()
fungsi terakhir anda.Gunakan Keupayaan Nodemailer untuk membalas janji dan bukannya menggunakan fungsi panggil balik...
Pendekatan lain ialah menukar panggilan balik Nodemailer kepada janji, walaupun ini tidak cukup ringkas pada pendapat saya