Estoy tratando de ejecutar un cron cada 1 hora.
Para lo cual inicié el trabajo cron en mi archivo index.js como se muestra a continuación
const cron = require('node-cron'); const readDocuments = require("./cronJobs/readDocuments"); var task = cron.schedule('0 0 */1 * * *', readDocuments); task.start(); Mientras que el código real que se ejecutará se ha escrito en ./cronJobs/readDocuments y el código dentro de este archivo está debajo, donde intento leer un archivo csv.
leerDocumentos.js
const ResponseManager = require("../common/ResponseManager"); var fs = require('fs'); const csv = require('csv-parser'); console.log('Read Document....') try { var filepath = "../files/abc.csv"; fs.createReadStream(filepath) .on('error', () => { // handle error }) .pipe(csv()) .on('data', (row) => { console.log('rowrowrow',row) }) .on('end', () => { // handle end of CSV }) } catch (error) { console.log('errorerror',error) res.status(500).json(ResponseManager(false, error.message)); } Cuando ejecuto el nodo js en cmd con node index.js , la consola Read Document.... se muestra pero el otro código no se ejecuta. Me está dando throw 'execution must be a function'; error
¿Cómo resuelvo esto o cuál es el procedimiento real para ejecutar el código dentro de un archivo con trabajo cron de index.js?
Por favor ayuda. Gracias !!
necesita exportar la función cron y consumirla en su archivo
El segundo argumento de cron.schedule() debe ser función. Debe envolver el código en una función y exportarlo desde el módulo.
const ResponseManager = require("../common/ResponseManager"); const fs = require('fs'); const csv = require('csv-parser'); module.exports = function () { console.log('Read Document....') try { const filepath = "../files/abc.csv"; fs.createReadStream(filepath) .on('error', () => { // handle error }) .pipe(csv()) .on('data', (row) => { console.log('rowrowrow', row) }) .on('end', () => { // handle end of CSV }); } catch (error) { console.log('errorerror', error) res.status(500).json(ResponseManager(false, error.message)); } };