He creado en mi proyecto varias funciones separadas en archivos separados que importo con module.exports.$functionName
Luego compilo todo en un archivo index.js. Este es el problema. La primera función permite descargar un archivo, sin el cual las otras dos funciones no pueden funcionar. Intenté usar las promesas para esperar la descarga, pero el archivo no se descarga y aparece este error:
Error: ENOENT: no existe tal archivo o directorio
Aquí está el código, especifico que cada función funciona cuando las ejecuta de forma independiente:
const mt = require("./mainTweet"); // from mainTweet.js const rp = require("./Reply"); // from Reply.js const od = require("./getcsv") // from getcsv.js function Download() { return new Promise((resolve) => { od.onDownload(); resolve(); }); } function firstTweet() { return new Promise((resolve) => { mt.getData() resolve(); }); } function secondTweet() { rp.Reply(); } async function Launch() { await Download(); await FirstTweet(); Reply(); } Launch();Como respondiste en un comentario que od.onDownload , mt.getData y rp.Reply son asíncronos, el problema es que no los await .
Cuando haces esto:
od.onDownload() resolve() onDownload() se ejecutará y devolverá una promesa inmediatamente y luego resolverá su propia promesa. Esto significa que onDownload aún no se ha resuelto (o lanzado). En su lugar, debe esperar cada llamada. Podrías simplificar todo tu código a esto:
const mt = require("./mainTweet"); // from mainTweet.js const rp = require("./Reply"); // from Reply.js const od = require("./getcsv") // from getcsv.js async function Launch() { await od.Download(); await mt.getData(); rp.Reply() } Launch();