Estoy usando server.js para iniciar el servidor y router.js para escuchar las solicitudes. Cuando trato de acceder al servidor, no pasa nada y no puedo alcanzarlo, supongo que sí, porque la función server.on no se ejecuta. Todo funciona, cuando lo puse solo en server.js aunque, por lo que el error parece estar relacionado con las exportaciones/importaciones, pero no puedo entender qué es.
servidor.js:
const fs = require("fs"); const http = require("http"); const template = require("./template.js"); const port = 3000; const server = http.createServer(); server.listen(port, () => { console.log(`Server listening on localhost:${port}`); }) module.exports = server;enrutador.js:
const server = require("./server.js"); const template = require("./template.js"); server.on("request", (req, res) => { let url = req.url; let method = req.method; let html; console.log("received req"); res.writeHead(200, { "content-type": "text/html; charset=utf-8" }); if(url.endsWith("/feedback") && method == "GET") { html = template.createHtml("Liste der Feedbacks"); } else { html = template.createHtml(`Methode: ${method}, URL: ${url}`); } res.end(html); })Si desea importar el router.js y tener el objeto del server accesible en ese archivo y ejecutar el método on en él, una forma de hacerlo es pasar el server y solicitar el archivo router.js de la siguiente manera:
servidor.js:
const fs = require("fs"); const http = require("http"); const port = 3000; const server = http.createServer(); const router = require("./router.js")( server ); server.listen(port, () => { console.log(`Server listening on http://localhost:${port}`); });enrutador.js:
const template = require("./template.js"); module.exports = function handleRequest( server ){ return server.on("request", (req, res) => { let url = req.url; let method = req.method; let html; console.log("received req"); res.writeHead(200, { "content-type": "text/html; charset=utf-8" }); if(url.endsWith("/feedback") && method == "GET") { html = template.createHtml("Liste der Feedbacks"); } else { html = template.createHtml(`Methode: ${method}, URL: ${url}`); } res.end(html); }) }Independientemente del patrón que pruebe, asegúrese de evitar las dependencias circulares .
Además, como recomendación general, le sugiero que intente evitar tight coupling en módulos como estos siempre que sea posible. Idealmente, el módulo del router no debería estar estrechamente acoplado al módulo del server .