He estado tratando de crear una interfaz usando nextjs para un backend que ejecuto en Java.
Estoy usando el paquete npm next-http-proxy-middleware y parece que el cuerpo de mi solicitud se está eliminando o estoy usando el paquete incorrectamente.
Aquí está la totalidad de mi archivo ./src/api/[...all].ts
import type { NextApiRequest, NextApiResponse } from 'next' import httpProxyMiddleware from 'next-http-proxy-middleware' type Data = { name: string } export const config = { api: { externalResolver: true, }, } export default (req: NextApiRequest, res: NextApiResponse) => { httpProxyMiddleware(req, res, { target: `http://${process.env.REACT_APP_URL}`, changeOrigin: true, }) }y aquí está el fragmento de código donde intento iniciar sesión, el formulario que proporciona estos datos se crea utilizando el formulario de gancho de reacción
const onSubmit: SubmitHandler<Inputs> = async (data: any) => { //console.log('username', watch('username'), 'password', watch('password')) const response = await axios.post( '/api/session', new URLSearchParams({ email: data.username, password: data.password, }) ) }Veo que se está conectando a mi backend ya que recibo un error generado por mi programa Java y no por next.js, pero solo me dice que el correo electrónico es nulo, lo que me lleva a creer que mis argumentos se están perdiendo En traducción
"Cannot invoke \"String.trim()\" because \"email\" is null - NullPointerException (DataManager:149 < PermissionsManager:508 < SessionResource:111 < ...)"Puedo hacer que funcione usando Vanilla Reaccionar, así que estoy seguro de que es algo que estoy haciendo mal en la implementación del next-http-proxy-middleware, pero me he estado golpeando la cabeza contra la pared demasiado tiempo. este. Agradezco toda la ayuda, gracias!
Descubrí la solución y me siento un poco tonto por no haberme dado cuenta antes:
https://github.com/vercel/next.js/discusiones/11036
Nextjs viene con un analizador de cuerpo automático y tuve que desactivarlo.
export const config = { api: { externalResolver: true, bodyParser: false, }, }