Tengo un script completo que actúa como un analizador. El script está escrito en NodeJS y funciona correctamente. El script devuelve una serie de datos y también los guarda en mi computadora. Me gustaría ejecutar este script desde la interfaz, con solo hacer clic en un botón. Según tengo entendido, ¿tengo que enviar una solicitud al servidor? Se sugiere usar Express para el servidor, pero todavía no he descubierto cómo llamar a un script de terceros desde él, y mucho menos devolver ningún dato. En este momento, todo lo que quiero es que mi secuencia de comandos se ejecute cuando haga una solicitud para el directorio raíz "/" y me envíe un json en respuesta (o, por ejemplo, un archivo json)
const express = require('express') const runParser = require("./parser"); const app = express() const port = 3000 app.get('/', async (req, res,next) => { await runParser() next() }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
Todo lo que necesitas para Express es esto:
const express = require('express'); const app = express(); const runParser = require("./parser"); const port = 3000; app.get("/", (req, res) => { runParser().then(results => { res.json(results); }).catch(err => { console.log(err); res.status(500).send("error"); }); }); app.listen(port, () => { console.log(`Server running on port ${port}`); });
Y luego puede acceder a eso simplemente yendo a:
http://localhost:3000
de su anfitrión local o
http://yourdomain.com:3000
en el navegador o emitiendo una llamada ajax a la URL deseada desde la página web Javascript.
Personalmente, no pondría este tipo de actividad en una solicitud GET para /
porque eso puede verse afectado por cosas como rastreadores web, motores de búsqueda, etc.
Probablemente pertenezca a un POST (para que los rastreadores no lo emitan) y personalmente lo pondría en algún nombre de ruta como:
app.post("/runparser", (req, res) => { // put your code here });
Y luego use un envío de formulario o una llamada ajax a esa URL para activarlo.