2014-05-23 15 views
6

sto ottenendo il seguente errore nel mio nodo e non riesco a capire perché:Node.JS fs.readFileSync() Bad argomenti

TypeError: Bad arguments 
    at Object.fs.readFileSync (fs.js:277:11) 
    at getSeries (/Users/user/tv/final.js:57:16) 
    at /Users/user/tv/final.js:89:4 
    at /Users/user/tv/node_modules/async/lib/async.js:610:21 
    at /Users/user/tv/node_modules/async/lib/async.js:249:17 
    at iterate (/Users/user/tv/node_modules/async/lib/async.js:149:13) 
    at /Users/user/tv/node_modules/async/lib/async.js:160:25 
    at /Users/user/tv/node_modules/async/lib/async.js:251:21 
    at /Users/user/tv/node_modules/async/lib/async.js:615:34 
    at /Users/user/tv/final.js:86:4 

Sono abbastanza sicuro che non ha nulla a che fare con il async npm package Sto usando come ho avuto lo stesso errore prima di iniziare a usarlo.

Ecco il codice:

function getSeries() { 
    JSON.parse(fs.readFileSync('updates.json', function(err,data) { 
     if (err) { 
      console.error(err); 
     } 
     else { 
      var json = data; 
     } 
})); 

risposta

12

si stia mescolando sincroni e asincroni in un brutto modo. Stai confondendo cose diverse.

Il codice dovrebbe essere sia così (sincrono):

try { 
    var json = JSON.parse(fs.readFileSync('updates.json')); 
} catch (err) { 
    console.error(err); 
} 

o asincrona:

fs.readFile('updates.json', function(err,data) { 
    if (err) { 
     console.error(err); 
    } 
    else { 
     var json = JSON.parse(data); 
    } 
}); 

La differenza è che fs.readFile (docs) si aspetta un callback e vi darà l'errore/risultato chiamando il callback dato. Non restituisce nulla.

E fs.readFileSync (docs) non accetta una richiamata, perché è sincrono e restituisce il risultato o genera l'errore.

anche se si sta parsing .json staticamente, è possibile utilizzare require:

var json = require('./updates') 

Si noti che, require funzione memorizza nella cache il suo output e le esecuzioni successive verrà restituito lo stesso oggetto senza bloccare o fare qualsiasi IO .

+0

Grazie Farid! Sono un bel padre, posso sistemarlo adesso. –

+0

Fantastico! Non ho mai preso questo su 'readFile' e' readFileSync'. – JDillon522

Problemi correlati