Saya sedang mengusahakan projek React.js/Next.js menggunakan Google reCAPTCHA. Bahagian hadapan saya nampaknya berfungsi (saya tahu itu kerana saya telah menyediakan penyata cetakan), tetapi bahagian belakang memberi saya ralat ini dalam terminal tempatan saya:
Ralat - Tiada kaedah HTTP dieksport dalam 'srcappapirecaptcharoute.ts'. Eksport bernama eksport untuk setiap kaedah HTTP.
Juga mendapat ralat dalam alat dev saya:
'POST http://localhost:3000/api/recaptcha 405 (Kaedah tidak dibenarkan)'
Saya rasa ini berkaitan dengan pepijat lain.
Ini kodnya:
import { NextApiRequest, NextApiResponse } from 'next'; import express from 'express'; import cors from 'cors'; import bodyParser from 'body-parser'; import axios from 'axios'; const app = express(); app.use(cors()); app.use(bodyParser.json()); console.log('hi'); export async function postHandler(req: NextApiRequest, res: NextApiResponse){ if (req.method === 'POST') { const { token } = req.body; try { const response = await axios.post( `https://www.goog le.com/recaptcha/api/siteverifysecret=${process.env.NEXT_PUBLIC_RECAPTCHA_SECRET_KEY}&response=${token}` ); console.log('you made it here'); if (response.data.success) { res.status(200).json({ message: 'reCAPTCHA verification successful' }); } else { res.status(400).json({ message: 'reCAPTCHA verification failed' }); } } catch (err) { console.log(err); res.status(500).json({ message: 'Internal server error' }); } }; }
Saya cuba menamakan semula fungsi itu, mengeksportnya sebagai const dan mengeksportnya pada penghujung fail dan bukannya pada masa penamaan.
Jika anda menggunakan NextJS 13
App Router
sila gunakan kod berikut:Fail:
./app/api/recaptcha/route.ts
Jika anda menggunakan NextJs 13
Page Router
maka gunakan:Fail:
./pages/api/recaptcha.ts
Semoga ini menyelesaikan masalah anda :)