Estoy tratando de crear un sistema de registro con MySQL y Node.JS. Pero recibo el error que ve a continuación, todavía estoy buscando activamente una solución, pero no pude encontrarla. Y decidí preguntarte.
.env
DB_HOST = 127.0.0.1
DB_USER = newuser
DB_PASSWORD = password123#
DB_DATABASE = userDB
DB_PORT = 3306
PORT = 3000
node.js
const express = require('express');
const app = express();
const mysql = require('mysql');
require('dotenv').config({path: './dbInfo.env'})
const db = mysql.createPool({
connectionLimit: 100,
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
port: process.env.DB_PORT
})
db.getConnection( (err, connection) => {
if (err) throw (err)
console.log("DB connected succesful:" + connection.threadId)
})
const port = process.env.DB_PORT
app.listen(port,
() => console.log('Server started on port ${port}...'))
console.log(process.env.DB_PASSWORD)
Parece que el Puerto 3306 ya está en uso. 3306 es el puerto estándar de MySQL, por lo que lo más probable es que su instancia de MySQL ya se esté ejecutando, lo que le gustaría.
Solo puede tener un servicio ejecutándose detrás de un puerto. Ese es el propósito de los puertos para dirigir el tráfico al proceso que puede manejar ese tráfico o espera ese tráfico.
Para resolver el problema, use const port = process.env.PORT
en lugar de const port = process.env.DB_PORT
. Su servidor Express luego se ejecuta en el puerto 3000
y su servidor MySQL en el puerto 3306
.
FYI: debe especificar algunos valores predeterminados (o errores) en caso de que las variables de entorno no estén configuradas. Es posible que los haya configurado aquí con su archivo .env
y que desee ejecutar el servidor en otro entorno algún día y se olvide de configurar algo y se pregunte por qué su servidor se bloquea.
Una solución rápida y fácil que funcionará para empezar podría ser usar OR lógico ( ||
). Esto establecerá el conjunto de puertos en las variables de entorno o el valor predeterminado de 3000
.
// Mocking process.env
const process = { env: {}}
// process.env.PORT is not defined here so the default value will be used
const port = process.env.PORT || 3000;
console.log(`Port: ${port}`)
También podría estar interesado en el paquete dotenv npm .