Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
EADDRINUSE: dirección ya en uso al agregar require

A pedido, mi servidor debe ejecutar un comando cmd y un archivo deployment.js. Todo funciona bien, pero si agrego esta línea const { getSimpleMessage } = require('../src/server') obtengo el error de que el puerto 3000 ya está en uso. ¿Por qué está pasando esto?

Servidor.js:

 app.post("/", (req,res) =>{ console.log("Get from /"); SimpleMessage = 'Hello world'; exec('npx hardhat run scripts/deploy.js --network goerli', (error, stdout, stderr) => { console.log(stdout); console.log(stderr); if (error !== null) { console.log("v error") console.log(`exec error: ${error}`); } }); res.send("Server received the request"); }); // starting the server app.listen(3000, () => { console.log('listening on port 3000'); });

Implementar.js:

 const { getSimpleMessage } = require('../src/server'); //THIS LINE CAUSES ERROR async function main() { const HelloWorld = await ethers.getContractFactory("HelloWorld"); // Start deployment, returning a promise that resolves to a contract object const hello_world = await HelloWorld.deploy("HelloWorld"); console.log("Contract deployed to address:", hello_world.address); } main() .then(() => process.exit(0)) .catch(error => { console.error(error); process.exit(1); });

Ejecuto el archivo con el comando: node src/server.

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Cuando el servidor se está ejecutando y recibe una POST / solicitud, implementa Deploy.js , lo que hace que el

 app.listen(3000, ...)

comando en server.js para ser ejecutado nuevamente, en otro proceso. Entonces habría dos procesos escuchando el puerto 3000, lo que conduce al error observado.

Tal vez necesite separar la función getSimpleMessage del archivo server.js .

about 4 years ago · Santiago Gelvez Relatório

0

Cuando ejecuta require('../src/server'); en el archivo deploy.js , se ejecuta todo el código de la parte src/server.js , incluida la parte app.listen(3000, ...) . Si el servidor ya se está ejecutando (usando el comando node src/server.js ), el puerto 3000 ya está en uso y se está ejecutando deploy.js (y, por lo tanto, al intentar ejecutar app.listen(3000, ...) ) se produce un error.

La solución más sencilla sería separar la lógica. Si desea conservar las declaraciones getSimpleMessage y app en el archivo src/server.js , puede eliminar la parte app.listen del archivo y, en su lugar, exportar el objeto de la app . Luego, cree, por ejemplo, un archivo index.js que importe el objeto de la app y ejecute la parte app.listen .

./index.js :

 const { app } = require('./src/server'); // starting the server app.listen(3000, () => { console.log('listening on port 3000'); });

Sin embargo, sugeriría que una solución más limpia sería simplemente poner la función getSimpleMessage en un archivo separado (si es posible).

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda