Node.js, फाइलें नहीं खोल सकते। त्रुटि: ENOENT, stat './path/to/file'


126

मैंने अपने कंप्यूटर पर एक्सप्रेस फ्रेमवर्क का उपयोग करके एक नोड.जेएस प्रोग्राम विकसित किया है, जहां यह बिना किसी शिकायत के ठीक चलता है।

हालांकि, जब मैं अपने SUSE स्टूडियो उपकरण पर कार्यक्रम चलाता हूं, जहां यह रहने का इरादा है, मुझे किसी भी फ़ाइल इंटरैक्शन में त्रुटि मिलती है।

Error: ENOENT, stat './path/to/file'

मैंने जाँच की है कि फ़ाइल अनुमतियाँ सही हैं, जो वे हैं। मेरा कंप्यूटर और मेरा उपकरण नोड के विभिन्न संस्करण चला रहे हैं, अगर यह मायने रखता है।

कोई विचार?


1
चूंकि मार्ग सापेक्ष है, शायद आप इसे एक अलग निर्देशिका से चला रहे हैं? आप पथ कैसे बना रहे हैं और निर्देशिका संरचना क्या है? और आप नोड कैसे चला रहे हैं?
loganfsmyth

1
धन्यवाद, हां मैं स्क्रिप्ट को एक अलग निर्देशिका से चला रहा था और मूर्खता से यह मान लिया कि फ़ाइल पथ स्क्रिप्ट के सापेक्ष ही होगा। मुझे पता था कि यह कुछ इस तरह से आसान था :)

यह निश्चित होना चाहिए। क्या आप यह बता सकते हैं कि आप किस तरह से रास्ता बना रहे हैं और आप इसे हल करने की उम्मीद कर रहे हैं? यदि आप चाहते हैं कि यह किसी विशेष फ़ाइल के सापेक्ष हो, तो सामान्यतया आप करते हैं__dirname + 'path/to/file';
loganfsmyth

हाँ, यही अब मैंने किया है। मैं "नोड ~ / पथ / से / script.js" निष्पादित करके स्क्रिप्ट चला रहा था और "~ / पथ /" को हल करने के लिए मेरी स्क्रिप्ट में फ़ाइलों के सापेक्ष संदर्भों की उम्मीद कर रहा था!

जवाबों:


187

.वर्तमान कार्य निर्देशिका के सापेक्ष निर्दिष्ट पथ , स्क्रिप्ट फ़ाइल के सापेक्ष नहीं हैं। तो फ़ाइल मिल सकती है यदि आप चलाते हैं node app.jsलेकिन यदि आप चलाते हैं तो नहीं node folder/app.js। इसका एकमात्र अपवाद है require('./file')और यह केवल इसलिए संभव है क्योंकि requireप्रति-मॉड्यूल मौजूद है और इस प्रकार यह जानता है कि इसे किस मॉड्यूल से बुलाया जा रहा है।

स्क्रिप्ट के सापेक्ष पथ बनाने के लिए, आपको __dirnameचर का उपयोग करना चाहिए ।

var path = require('path');

path.join(__dirname, 'path/to/file')

या संभावित रूप से

path.join(__dirname, 'path', 'to', 'file')

11
धन्यवाद; यह कभी-कभी इस तरह की छोटी चीजें होती हैं जो कि दस्तावेज़ीकरण में ढूंढना मुश्किल होता है, जैसे कि newbies के लिए (मेरी तरह!)।

5

यहाँ कोड आपके app.js का उपयोग करने के लिए

इनपुट फ़ाइल नाम निर्दिष्ट करता है

res.download(__dirname+'/'+input);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.