Tengo el problema de que el archivo aún no existe antes de leerlo. Como resultado, sigo recibiendo el mensaje de error no such File . Que yo sepa, fs.writeFileSync(); deberia solucionar eso...?
funcion en modulo:
setup: function(server, RAM, client, message) { const dc = require("../libs/dcTools.js"); const db = require('../libs/dbTools.js'); const fs = require('fs'); const channel = dc.getChannel(message, server.dashboard.channel); const dashboard = this.create(server, RAM, client); channel.send(dashboard).then(msg => { //that is the line ↓ fs.writeFileSync(`./RAM/${server.id}/dsbdmsgid.txt`, msg.id); console.log('done'); }); //and this line produces the error ↓ const msg = fs.readFileSync(`./RAM/${server.id}/dsbdmsgid.txt`, 'utf8'); return msg; },Función que llama a la función:
execute(server, message) { const fs = require('fs'); const db = require('../../libs/dbTools.js'); const dashboard = require('../../modules/dashboard.js'); if (args[0] == "setup") { server.dashboard.channel = message.channel.id; //function ↓ server.dashboard.msg = dashboard.setup(server, message); console.log('ready'); server.dashboard.mod = true; db.updateServer(server); } else if (args[0] == "off") { server.dashboard.mod = false; db.updateServer(server); } }Su función de setup debe ser asíncrona Realice los siguientes cambios en la declaración de su función:
setup: async function(server, RAM, client, message) { const dc = require("../libs/dcTools.js"); const db = require('../libs/dbTools.js'); const fs = require('fs'); const channel = dc.getChannel(message, server.dashboard.channel); const dashboard = this.create(server, RAM, client); channel.send(dashboard).then(msg => { //that is the line ↓ fs.writeFileSync(`./RAM/${server.id}/dsbdmsgid.txt`, msg.id); console.log('done'); }); //and this line produces the error ↓ const msg = fs.readFileSync(`./RAM/${server.id}/dsbdmsgid.txt`, 'utf8'); return msg; }Ahora para llamar a esa función:
dashboard.setup(server, message).then((msg) => { // Use the returned value of msg }) Esto debería funcionar, pero recomiendo usar fs.readFile en lugar de fs.readFileSync , ya que detendrá el bucle de subproceso único mientras se realiza la E/S y otros procesos no pueden continuar hasta que finalice.