archivo index.js
import http from 'http'; function terminalConsole() { console.log(5); } const server = http.createServer((req, res) => { terminalConsole(); res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello'); }); server.listen(5000, '127.0.0.1', () => { console.log(`server listening on localhost:5000`); }); Y cuando se llama desde la terminal, se obtienen dos 5 salidas en lugar de una.
Enlace de Stackblitz: https://stackblitz.com/edit/node-t5zngd?file=index.js
Puede usar una función para iniciar sesión solo una vez , según el contenido del registro:
const logOnceClass = () => { const cache = new Map() return (string, logFunction = console.log) => { // if its already logged, return if (cache.has(string)) return logFunction(string) cache.set(string, true) } } const logOnce = logOnceClass() logOnce(1) // 1 logOnce(1) // (No log, "1" has been already logged) logOnce(2) // 2Use el evento req.on node.js para iniciar sesión en la consola en un evento específico. Aquí está la versión fija de su código.
const http = require("http"); function terminalConsole() { console.log(5); } const server = http.createServer((req, res) => { res.setHeader("Content-Type", "text/plain"); res.statusCode = 200; req.on('end', () => { terminalConsole(); }); res.end("Hello"); }); server.listen(3001, () => { console.log(`server listening on localhost:3001`); });Lo que sucede aquí es que cada vez que finaliza una solicitud, registra el mensaje en la consola.