2011-12-13 18 views
10

मैं fs.unlink() उपयोग कर रहा हूँ एक फ़ाइल को हटाने का कारण बनता है और मैं निम्न त्रुटि प्राप्त:Node.js fs.unlink समारोह EPERM त्रुटि

uncaught undefined: 

Error: EPERM, Operation not permitted '/Path/To/File' 

किसी को भी पता है कि एक कारण है कि यह हो रहा है?

+0

अपने त्रुटि संदेश की जाँच करें! प्रक्रिया चलाने वाले उपयोगकर्ता के साथ ऐसा करने का प्रयास करें। (i.e: /> अनलिंक/पथ/टू/फ़ाइल) – malletjo

उत्तर

0

हां, आपको उस फ़ाइल को हटाने/अनलिंक करने की अनुमति नहीं है। अधिक अधिकारों के साथ पुनः प्रयास करें या सत्यापित करें कि आप इसे सही पथ दे रहे हैं।

22

आप एक खाली निर्देशिका नहीं हटा सकते हैं जो खाली नहीं है। और fs.unlinkSync() फ़ाइल को फ़ोल्डर को हटाने के लिए उपयोग नहीं किया जाता है।

stackoverflow से
var deleteFolderRecursive = function(path) { 
    if(fs.existsSync(path)) { 
     fs.readdirSync(path).forEach(function(file) { 
     var curPath = path + "/" + file; 
      if(fs.statSync(curPath).isDirectory()) { // recurse 
       deleteFolderRecursive(curPath); 
      } else { // delete file 
       fs.unlinkSync(curPath); 
      } 
     }); 
     fs.rmdirSync(path); 
    } 
}; 

स्निपेट:: Is node.js rmdir recursive ? Will it work on non empty directories?

+0

ऐप का उपयोग कर रहा था, जबकि एक एनपीएम मॉड्यूल अद्यतन करके एक ही त्रुटि मिली! धन्यवाद। – Vadorequest

+0

यह स्निपेट किसी भी कोड में उपयोग नहीं किया जाना चाहिए जो क्लाइंट अनुरोध को संभालता है क्योंकि यह सिंक्रोनस आईओ करता है और संभावित रूप से बड़ी निर्देशिका पेड़ को हटाते समय अपना पूरा एप्लिकेशन लॉक कर देगा। – selfawaresoup

+0

@lnwdr हां यह स्निपेट क्लाइंट अनुरोध में बड़ी निर्देशिकाओं के लिए खराब है। लेकिन अपेक्षाकृत छोटी निर्देशिका पेड़ के लिए उपयोग करना ठीक है। क्या आप क्लाइंट अनुरोध से आने वाले निर्देशिका पेड़ को हटाने के लिए कोई कामकाज प्रदान कर सकते हैं? इसकी सराहना की जाएगी। धन्यवाद – Raghavendra

6

आप तो

कोई खाली फोल्डर fs.rmdir()

एक गैर खाली फ़ोल्डर हटाने के लिए इस स्निपेट निकालने के लिए, का उपयोग करें, का उपयोग करें आरएम-आरएफ की तरह कुछ हासिल करना चाहते हैं, rimraf नामक एनपीएम से एक पैकेज है जो इसे बहुत आसान बनाता है।

1

शायद पथ फ़ाइल के स्थित है erroneus है।

यदि नहीं, तो fs.unlinkSync() के साथ प्रयास करें

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