Nextjs 13 エラー: 未定義のプロパティを読み取ろうとしています (「ヘッダー」を読み取っています)
P粉652495194
P粉652495194 2023-08-31 16:47:14
0
1
522
<p>Nextjs で作成した投稿 API エンドポイントのヘッダーに問題があります。 </p> <p>私のエンドポイントはフォーム送信用であり、入力を電子メールに転送します。現在のコードは電子メールを送信でき、電子メールで正常に受信できますが、リクエストを行うたびにヘッダーでエラーが返されます。 </p> <pre class="brush:php;toolbar:false;">import { NextResponse, NextRequest } from "next/server" 「nodemailer」からノードメーラーをインポートします。 非同期関数のエクスポート POST(リクエスト: NextRequest、レスポンス: NextResponse) { const formData = await request.formData() const emailValue = formData.get("電子メール") const messageValue = formData.get("メッセージ") constnumberValue = formData.get("電話番号") if (!messageValue || !numberValue || !emailValue) { return NextResponse.json({ メッセージ: "すべての必須フィールドに入力してください!" }, { ステータス: 400 }) } const Transporter = nodemailer.createTransport({ サービス: 「gmail」、 認証: { ユーザー: process.env.EMAIL、 パス: process.env.PASSWORD、 }、 TLS: { 拒否拒否: false、 }、 }) const mailOptions = { から: `${emailValue}`、 to: `${process.env.EMAIL}`, 件名: `お問い合わせページ ${numberValue} - ${emailValue} からのメッセージ `, テキスト: `${messageValue}`, } Transporter.sendMail(mailOptions, (err, info) => { if (エラー) { return NextResponse.json({ メッセージ: `${err}` }, { ステータス: 500 }) } return NextResponse.json({ メッセージ: "メールは正常に送信されました!" }, { ステータス: 200 }) }) }</pre> <p>何が間違っていたのかわかりません。 return ステートメントで NextResponse を実行するというスレッドを読みましたが、それでも機能しませんでした。 </p> <p>表示されるエラー メッセージ:</p> <pre class="brush:php;toolbar:false;"> - エラー TypeError: 未定義のプロパティを読み取れません (「ヘッダー」を読み取っています) eval で (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粉652495194
P粉652495194

全員に返信(1)
P粉226413256

この問題は この質問 に関連していると思います。

最後の 2 つの return NextResponse...transporter.sendMail() コールバック内で呼び出されるため、POST()## からは取得されません。 # 関数の戻り値。

コールバック関数を使用する代わりに、

Nodemailer の Promise を返す機能を使用します... リーリー

もう 1 つの方法は、Nodemailer のコールバックを Promise に変換することですが、私の意見では、これは十分に簡潔ではありません
リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート