Quiero usar algunas de las bibliotecas estándar de Deno en Node.js para crear un servidor HTTP.
Sé que solo puedo descargarlo, pero quiero mantenerme actualizado con la última biblioteca, así que quiero importarlos así:
import { serve } from "https://deno.land/std/http/server.ts"; // Defining port to be used const PORT = 8080 // Setting server to listen at port const server = serve({ port: PORT }); console.log(`This Hello World server is up and running on http://localhost:${PORT}/`); // Sending Hello World to any client that connects for await (const req of server) { req.respond({ body: "Hello World!\n" }); }En teoría, es posible usar un subconjunto limitado de la biblioteca std de Deno en Node (módulos que no usan nada de las API web, nada de la API de Deno y no incluyen instrucciones de importación con especificadores que terminan en .ts ).
Sin embargo, el módulo de su ejemplo en https://deno.land/std/http/server.ts no cumple con este criterio y creará errores de tiempo de compilación en tsc (TypeScript) y errores de tiempo de ejecución en Node.js.
No importa, solo quiero usar la sintaxis ES6+ para crear un servidor, así que uso esto:
import https from "https"; import http from "http"; export default class Server { readonly server: http.Server | https.Server; constructor(options?: http.ServerOptions | https.ServerOptions, httpsMode?: boolean) { this.server = (httpsMode ? https : http).createServer(options); } listen(port?: number, hostname?: string, backlog?: number) { let s = this.server; s.listen(port, hostname, backlog); return { [Symbol.asyncIterator]() { return { async next() { return { done: false, value: await new Promise<{request: http.IncomingMessage, response: http.ServerResponse}>(result => { s.on('request', (request, response) => result({request, response}) ); }) }; } } } } } close() { this.server.close(); } }Este módulo está disponible en NPM, paquete Newer.js después de publicar 0.0.4