찾다

 >  Q&A  >  본문

Nextjs 13 오류: 정의되지 않은 속성을 읽으려고 시도했습니다('헤더' 읽기).

<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>
P粉652495194P粉652495194440일 전497

모든 응답(1)나는 대답할 것이다

  • P粉226413256

    P粉2264132562023-09-01 16:22:15

    문제는 이 질문과 관련이 있다고 말하고 싶습니다.

    마지막 두 개의 return NextResponse...调用在transporter.sendMail()回调内部,所以它们不会从POST() 기능을 반환합니다.

    콜백 함수를 사용하는 대신 Nodemailer의 Promise 반환 기능을 사용하세요...

    으아악

    또 다른 접근 방식은 Nodemailer의 콜백을 Promise로 변환하는 것입니다. 제 생각에는 이것이 충분히 간결하지 않지만

    으아악

    회신하다
    0
  • 취소회신하다