Nextjs 13 오류: 정의되지 않은 속성을 읽으려고 시도했습니다('헤더' 읽기).
P粉652495194
2023-08-31 16:47:14
<p>Nextjs에서 생성한 게시물 API 엔드포인트의 헤더에 문제가 있습니다. </p>
<p>내 엔드포인트는 양식 제출을 위한 것이며 입력 내용을 이메일로 전달합니다. 현재 코드로 이메일을 보낼 수 있고 이메일로 제대로 수신되지만 요청할 때마다 헤더에 오류가 반환됩니다. </p>
<pre class="brush:php;toolbar:false;">import { NextResponse, NextRequest } from "next/server"
"nodemailer"에서 nodemailer를 가져옵니다.
비동기 함수 내보내기 POST(요청: NextRequest, 응답: NextResponse) {
const formData = request.formData()를 기다립니다.
const emailValue = formData.get("이메일")
const messageValue = formData.get("메시지")
const numberValue = formData.get("phone_number")
if (!messageValue || !numberValue || !emailValue) {
return NextResponse.json({ 메시지: "필수 항목을 모두 입력하세요!" }, { status: 400 })
}
const 운송업자 = nodemailer.createTransport({
서비스: "gmail",
인증: {
사용자: process.env.EMAIL,
패스: process.env.PASSWORD,
},
TLS: {
거부권한 없음: 거짓,
},
})
const mailOptions = {
보낸 사람: `${emailValue}`,
받는 사람: `${process.env.EMAIL}`,
제목: `연락처 페이지 ${numberValue} - ${emailValue}에서 보낸 메시지 `,
텍스트: `${messageValue}`,
}
Transporter.sendMail(mailOptions, (err, info) => {
만약 (오류) {
NextResponse.json({ 메시지: `${err}` }, { 상태: 500 }) 반환
}
return NextResponse.json({ 메시지: "이메일이 성공적으로 전송되었습니다!" }, { 상태: 200 })
})
}</pre>
<p>제가 뭘 잘못했는지 잘 모르겠습니다. return 문에서 NextResponse를 수행하는 방법에 대한 스레드를 읽었지만 그것조차 작동하지 않았습니다. </p>
<p>표시된 오류 메시지:</p>
<pre class="brush:php;toolbar:false;"> - 오류 TypeError: 정의되지 않은 속성을 읽을 수 없습니다('헤더' 읽기).
평가판(webpack-internal:///(sc_server)/./node_modules/next/dist/server/future/route-modules/app-route/module.js:261:61)
process.processTicksAndRejections(node:internal/process/task_queues:95:5)</pre></p>
문제는 이 질문과 관련이 있다고 말하고 싶습니다.
마지막 두 개의
return NextResponse...
调用在transporter.sendMail()
回调内部,所以它们不会从POST()
기능을 반환합니다.콜백 함수를 사용하는 대신 Nodemailer의 Promise 반환 기능을 사용하세요...
으아악또 다른 접근 방식은 Nodemailer의 콜백을 Promise로 변환하는 것입니다. 제 생각에는 이것이 충분히 간결하지 않지만
으아악