Hakan21 Posted October 7, 2016 Report Posted October 7, 2016 Ma puteti ajuta la o problema intampinata la un cod javascript? (este vorba de un auto poster) Imi da eroarea dupa ce dau comanda la script SyntaxError: Unable to parse JSON string scripts\execute_task.js:20 // read configuration file var taskFile = fs.read(taskFileName); task = JSON.parse(taskFile); ===> asta ar fi eroarea Quote
aml Posted October 7, 2016 Report Posted October 7, 2016 (edited) Poti pune te rog si JSON-ul? Sigur e valid? Edited October 7, 2016 by aml Quote
georgerock Posted October 18, 2016 Report Posted October 18, 2016 Nu stiu daca mai ai nevoie de un raspuns sau daca ai rezolvat problema , dar o raspund la intrebare oricum. In primul rand , javascript e un limbaj asincron, ceea ce inseamna ca ruleaza codul tau rand cu rand si nu asteapta ca o functie sa se execute inainte sa ruleze urmatoarea linie de cod. Pentru codul tau, asta inseamna ca tu apelezi functia json.parse inainte ca fs.read sa termine de citit fisierul si atunci, in momentul rularii taskFile este null, ceea ce nu este un string json. Daca te uiti la fs.read(); la api-ul nodeJS : https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_read_fd_buffer_offset_length_position_callback o sa vezi ca are ca prim paramentru fisierul de citit si ca ultim parametru o functie de callback. Un callback e o functie care este chemata in momentul in care se termina de executat functia initiala. Pentru ca codul tau sa fie valid ar trebui sa fie ceva de genul: var taskFile = fs.read(taskFileName, function toJson (err, data){ if (err) { window.alert("error: " err)} return JSON.parse(data)}; O alta alternativa ar fi functia fs.readSync(); : https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readsync_fd_buffer_offset_length_position caz in care trebuie doar sa inlocuiesti functia .read cu .readSync 2 Quote