Crear un nuevo proyecto React
Parece que hay un problema con la instalación de dependencias en tu proyecto de React. El error indica que falta el módulo 'ajv/dist/compile/codegen'
, que es una parte de la biblioteca ajv
, utilizada para la validación de esquemas JSON.
Pasos para solucionarlo:
-
Eliminar y reinstalar dependencias
Abre una terminal en la carpeta del proyecto y ejecuta:Luego intenta iniciar el proyecto de nuevo con:
-
Forzar la instalación de
ajv
yajv-keywords
Si el problema persiste, instala manualmente las versiones correctas deajv
yajv-keywords
:Luego vuelve a ejecutar:
-
Verificar versiones de
react-scripts
ywebpack-dev-server
A veces, hay conflictos entre versiones dereact-scripts
ywebpack-dev-server
. Intenta actualizar: -
Usar
npm dedupe
para corregir dependencias duplicadas
Si después de estos pasos sigues con el problema, dime qué versión de node
y npm
estás usando (node -v
y npm -v
) para revisar posibles incompatibilidades.
En el archivo de consulta
import { useState, useEffect } from "react";import axios from "axios";export const useConsulta = (lon, lat) => {const [lugares, setLugares] = useState([]);useEffect(() => {if (lon === 0 && lat === 0) return; // Evitar consultas innecesarias con valores inicialesconst fetchData = async () => {try {const response = await axios.get(`http://127.0.0.1:3001/api/calles?longitud=${lon}&latitud=${lat}`);setLugares(response.data);} catch (error) {console.error("Error fetching data:", error);}};fetchData();}, [lon, lat]); // Agregar lon y lat como dependenciasreturn lugares;};
y por ultimo
const express = require("express");const { Pool } = require("pg");const cors = require("cors");const app = express();const port = 3001;// Configuración de la conexión a PostgreSQLconst pool = new Pool({user: "postgres",host: "localhost",database: "--------",password: "*****",port: 5432,});// Middlewareapp.use(cors());app.use(express.json());// Comprobar la conexión antes de iniciar el servidorpool.connect().then(client => {console.log("Conexión a PostgreSQL exitosa");client.release();app.listen(port, () => {console.log(`Servidor corriendo en http://localhost:${port}`);});}).catch(err => {console.error("Error de conexión a PostgreSQL:", err);process.exit(1);});// ✅ Ruta corregida para obtener calles más cercanasapp.get("/api/calles", async (req, res) => {try {// Extraer latitud y longitud de los parámetros de consultaconst { longitud, latitud } = req.query;console.log("Coordenadas recibidas:", longitud, latitud); // 👀 Verifica los datos aquí// Validar si los parámetros existen y son númerosif (!longitud || !latitud || isNaN(longitud) || isNaN(latitud)) {return res.status(400).json({ error: "Parámetros inválidos" });}const query = `SELECTid, nomvial, objectid, postalcode, st_name,mun_name, sett_name, sett_type, area,shape_leng, shape_area,ST_Distance(geom, ST_SetSRID(ST_MakePoint($1, $2), 4326)) AS distancia_metrosFROM public.calle_corregida_eliminadaORDER BY distancia_metrosLIMIT 1`;// Ejecutar consulta con valores convertidos a floatconst { rows } = await pool.query(query, [parseFloat(longitud), parseFloat(latitud)]);res.json(rows);} catch (err) {console.error("Error al obtener datos:", err);res.status(500).json({ error: "Error del servidor al obtener los datos" });}});// Manejo de errores globalapp.use((err, req, res, next) => {console.error(err.stack);res.status(500).send("Algo salió mal!");});
recuerda ejecutar el servidor express
PS D:\nuevo_proyecto\coordenadas\src\components> node server.js
Conexión a PostgreSQL exitosa
Servidor corriendo en http://localhost:3001
en el archivo de consulta