2015-10-28 14 views
12

मैं यह निर्धारित करने का प्रयास कर रहा हूं कि कोई फ़ाइल मौजूद है या नहीं। यदि यह अस्तित्व में नहीं है, तो मैं अपना कोड जारी रखना चाहता हूं ताकि इसे बनाया जा सके। जब मैं निम्न कोड का उपयोग करता हूं, यदि फ़ाइल मौजूद है, तो यह प्रिंट करता है कि 'यह मौजूद है'। यदि यह अस्तित्व में नहीं है, तो यह मेरे ऐप को दुर्घटनाग्रस्त कर देता है।fs.statSync त्रुटि फेंकता है अगर फ़ाइल मौजूद नहीं है

var checkDuplicateFile = function(){ 
    var number = room.number.toString(); 
    var stats = fs.statSync(number); 
    if(stat){ 
     console.log('it exists'); 
    }else{ 
     console.log('it does not exist'); 
    } 

}; 
+0

जांच इस सवाल है, यह जवाब देने के समान है: http://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js –

+0

मदद नहीं करता है कि मुझे। यह मुझसे पूछे गए प्रश्न का उत्तर नहीं देता है। – Mike

+0

क्या आप फ़ंक्शन के एसिंक संस्करण का उपयोग नहीं कर सकते? https://nodejs.org/api/fs.html#fs_file_system –

उत्तर

25

आपका आवेदन क्योंकि आप एक try/catch ब्लॉक में अपने fs.statSync लपेटकर नहीं कर रहे हैं क्रैश हो रहा है: यहाँ मेरी कोड है। नोड में सिंक फ़ंक्शन त्रुटि को वापस नहीं करते हैं जैसे कि वे अपने async संस्करणों में करेंगे। इसके बजाय, वे अपनी त्रुटियों को फेंक देते हैं जिन्हें पकड़ा जाना चाहिए।

try { 
    var stats = fs.statSync(number); 
    console.log('it exists'); 
} 
catch(err) { 
    console.log('it does not exist'); 
} 

अपने अनुप्रयोग इस आपरेशन की आवश्यकता नहीं है तुल्यकालिक होने के लिए (आगे निष्पादन जब तक इस ऑपरेशन समाप्त हो गया है ब्लॉक) तो मैं async संस्करण का प्रयोग करेंगे।

fs.stat(number, function(err, data) { 
    if (err) 
    console.log('it does not exist'); 
    else 
    console.log('it exists'); 
}); 
संबंधित मुद्दे