2012-11-24 11 views
118

मैंने अपने कंप्यूटर पर एक्सप्रेस फ्रेमवर्क का उपयोग करके एक node.js प्रोग्राम विकसित किया है, जहां यह कोई शिकायत नहीं है।Node.js, फ़ाइलें नहीं खोल सकते हैं। त्रुटि: ENOENT, stat './path/to/file'

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

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

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

कोई विचार?

+1

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

+1

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

+0

यह ठीक करने योग्य होना चाहिए। क्या आप कुछ कोड जोड़ सकते हैं यह दिखाते हुए कि आप पथ कैसे बना रहे हैं और आप इसकी क्या अपेक्षा कर सकते हैं? यदि आप इसे किसी विशेष फ़ाइल के सापेक्ष होना चाहते हैं, तो आमतौर पर आप '__dirname + 'पथ/to/file' करेंगे;' – loganfsmyth

उत्तर

178

. के साथ निर्दिष्ट पथ वर्तमान कार्य निर्देशिका के सापेक्ष हैं, स्क्रिप्ट फ़ाइल के सापेक्ष नहीं। इसलिए यदि आप 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') 
+9

धन्यवाद; यह कभी-कभी छोटी चीजें हैं जो दस्तावेजों में खोजना मुश्किल है, नए लोगों के लिए (जैसे मेरे!)। – CalumMc

4

यहाँ अपने app.js

इनपुट का उपयोग करने के लिए कोड

res.download(__dirname+'/'+input);