I have an error when I try to consult a route of my api that I have created with express and a mysql database, I have a project with react native and I get an error of AxiosError: Network Error, how can I solve it please, what would be wrong? , the server with node app.js runs correctly for me
Function of my Enter button:
const handleLogin = async () => {
if (!usuario || !contraseña) {
Toast.show({
type: 'error',
text1: 'Error',
text2: 'Por favor completa los campos usuario y contraseña. ⛔',
});
return;
}
try {
const response = await api.post('/auth/login', { usuario, contraseña });
// console.log(response);
if (response.data.token) {
signIn(response.data, 'empresa');
Toast.show({
type: 'success',
text1: 'Éxito',
text2: 'Inicio de sesión exitoso',
});
} else {
Toast.show({
type: 'error',
text1: 'Error',
text2: 'Error en el inicio de sesión',
});
}
} catch (error) {
Toast.show({
type: 'error',
text1: 'Error',
text2: 'Error en el inicio de sesión',
});
console.log(error)
}
// console.log('hola')
};
authController.js:
exports.login = async (req, res) => {
const { usuario, contraseña } = req.body;
if (!usuario || !contraseña) {
return res.status(400).json({ error: 'Se requieren usuario y contraseña' });
}
try {
const user = await Usuario.findOne({ where: { usuario } });
if (!user) {
return res.status(404).json({ error: 'Usuario no encontrado' });
}
const isMatch = await bcrypt.compare(contraseña, user.contraseña);
if (!isMatch) {
return res.status(401).json({ error: 'Contraseña incorrecta' });
}
const token = jwt.sign({ id: user.id_usuario }, config.JWT_SECRET, {
expiresIn: '1h',
});
res.json({ token, user: { id: user.id_usuario, usuario: user.usuario, nombre_completo: user.nombre_completo } });
} catch (error) {
console.error('Error en el inicio de sesión:', error);
res.status(500).json({ error: 'Error en el inicio de sesión' });
}
};
app.js:
const express = require('express');
const app = express();
const db = require('./src/config/db'); // Importar el archivo de configuración de la base de datos
const { sequelize } = require('./src/models'); // Importar instancia de sequelize
// Conectar a la base de datos
db.connect();
// Importar rutas
const authRoutes = require('./routes/authRoutes');
const empresaRoutes = require('./routes/empresaRoutes');
const materialRoutes = require('./routes/materialRoutes');
const ordenCompraRoutes = require('./routes/ordenCompraRoutes');
const ordenCompraMaterialRoutes = require('./routes/ordenCompraMaterialRoutes');
const proveedorRoutes = require('./routes/proveedoresRoutes'); // Nombre corregido
const rolRoutes = require('./routes/rolRoutes');
const authProveedorRoutes = require('./routes/authProveedorRoutes');
// Middleware para parsear JSON
app.use(express.json());
app.get('/', (req, res) => {
res.send('Hello World!')
})
// Configurar rutas
app.use('/api/auth', authRoutes); // Ruta de autenticación para usuarios de empresa
app.use('/api/empresas', empresaRoutes);
app.use('/api/materiales', materialRoutes);
app.use('/api/ordencompra', ordenCompraRoutes);
app.use('/api/ordencompramaterial', ordenCompraMaterialRoutes);
app.use('/api/proveedores', proveedorRoutes);
app.use('/api/roles', rolRoutes);
app.use('/api/authProveedor', authProveedorRoutes); // Ruta de autenticación para usuarios de proveedor
// Puerto del servidor
const PORT = process.env.PORT || 3000;
// Sincronizar modelos con la base de datos y luego iniciar el servidor
sequelize.sync({ force: false }) // Cambiar a 'false' para evitar que se eliminen y vuelvan a crear las tablas cada vez
.then(() => {
app.listen(PORT, () => {
console.log(`Servidor iniciado en el puerto ${PORT}`);
});
})
.catch(err => {
console.error('Error al sincronizar la base de datos:', err);
});
constants.js:
export const API_URL = 'http://localhost:3000//api'; // Ajusta esta URL a la URL de tu servidor
api.ts:
import axios from 'axios';
import { API_URL } from '../utils/constants';
const api = axios.create({
baseURL: API_URL,
});
export default api;