2014-05-23 8 views
6

मैं अपने नोड में निम्न त्रुटि हो रही है और समझ नहीं क्यों:Node.js fs.readFileSync() ग़लत तर्क

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 

मैं बहुत यकीन है कि यह साथ कोई संबंध नहीं है कर रहा हूँ एसिंक एनपीएम पैकेज का उपयोग कर रहा हूं क्योंकि मैंने इसका उपयोग शुरू करने से पहले मुझे एक ही त्रुटि मिली है।

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

उत्तर

12

आप एक बुरा तरह से अतुल्यकालिक और तुल्यकालिक मिश्रण कर रहे हैं:

यहाँ कोड है। आप अलग-अलग सामान उलझन में हैं।

आपका कोड होना चाहिए या तो इस (तुल्यकालिक) की तरह:

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

या अतुल्यकालिक:

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

अंतर आता है कि fs.readFile (docs) एक कॉलबैक अपेक्षा करता है और आप त्रुटि दे देंगे/दिए गए कॉलबैक को कॉल करके परिणाम। यह कुछ भी वापस नहीं करता है।

और fs.readFileSync (docs) कॉलबैक स्वीकार नहीं करता है, क्योंकि यह तुल्यकालिक है और यह परिणाम देता है या त्रुटि को फेंकता है।

इसके अलावा, अगर आप .json स्थिर पार्स करने हैं, तो आप require उपयोग कर सकते हैं:

var json = require('./updates') 

ध्यान दें कि, require समारोह में यह उत्पादन का कैश होगा और बाद में रन पर रोक या कर रही किसी भी IO के बिना एक ही वस्तु वापस आ जाएगी ।

+0

धन्यवाद फरीद! मैं बहुत साहसी हूं मैं इसे ठीक कर सकता हूं। –

+0

शानदार! मैंने इसे 'readFile' और' readFileSync' के बारे में कभी नहीं पकड़ा। – JDillon522

संबंधित मुद्दे