Jump to content
Sign in to follow this  
Hakan21

Problema cod

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

 

   

  • Upvote 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...