2015-09-21 4 views
23

के साथ फाइल एक्सेस कर रहा है यह एक सीधी आगे की समस्या की तरह लग रहा था। लेकिन मैं इसे दरकिनार करने में सक्षम नहीं हूं। भीतर helper1.js मैं (config/dev/ से) foobar.json तक पहुँचने के लिए चाहते हैंनोडजेएस रिश्तेदार पथ

root 
    -config 
    --dev 
    ---foobar.json 
    -helpers 
    --helper1.js 

मैं इस fs: how do I locate a parent folder?

काम करने के लिए किसी भी मदद के लिए यहाँ बहुत अच्छा होगा नहीं मिल सका।

+1

'.. \ config \ dev \ foobar.json' – Ben

+0

यह बेहतर होगा अगर आप अपने जेसन डेटा को '.js' फ़ाइल में सहेज सकें (' .json' के बजाय) और फिर '.js' फ़ाइल 'module.exports' से। :) – AdityaParab

+2

@ आदित्यपाराब: यदि आप जेएसओएन फ़ाइल को .js के बजाय .json के रूप में सहेजते हैं तो आपको मॉड्यूल की आवश्यकता नहीं है। इसे निर्यात करें - आपको इसकी आवश्यकता हो सकती है। JSON फ़ाइल स्वचालित रूप से पूरी तरह से निर्यात की जाती है (या इसे किसी अन्य तरीके से रखने के लिए, JSON फ़ाइलों को 'आवश्यकता() ' – slebetman

उत्तर

51

आप path मॉड्यूल का उपयोग निर्देशिका के पथ में शामिल होने के लिए कर सकते हैं जिसमें helper1.jsfoobar.json के सापेक्ष पथ पर रहता है। यह आपको foobar.json पर पूर्ण पथ देगा।

var fs = require('fs'); 
var path = require('path'); 

var jsonPath = path.join(__dirname, '..', 'config', 'dev', 'foobar.json'); 
var jsonString = fs.readFileSync(jsonPath, 'utf8'); 

यह लिनक्स, ओएसएक्स, और विंडोज पर यूटीएफ 8 एन्कोडिंग मानने पर काम करना चाहिए।

+0

द्वारा समर्थित किया जाता है' __dirname' – osrpt

+4

@osrpt का उपयोग करने की आवश्यकता नहीं है '__dirname' का उपयोग करना बेहतर है क्योंकि पथ सही होगा संदर्भ जिसमें हेल्पर 1 स्क्रिप्ट चलती है (उदाहरण के लिए 'नोड हेल्पर्स/हेल्पर 1.जेएस' रूट निर्देशिका से काम करेगा)। – AerandiR

+0

यह सही काम किया! मैंने पथ नहीं किया लेकिन __dirname + '/ ..' – lonelymo

9

सरल! फ़ोल्डर .. नामित मूल फ़ोल्डर है, तो आप फ़ाइल आप दो स्तरों तक जाने के लिए की जरूरत है, तो आप इस तरह के

var foobar = require('../config/dev/foobar.json'); 

के रूप में की जरूरत के लिए पथ बना सकते हैं, तो आप ../../ आदि

कुछ अधिक जानकारी के बारे में होगा इसके बारे में this SO answer और इसकी टिप्पणियां

+2

कृपया यहां अपने कोड में कुछ स्पष्टीकरण जोड़ें। –

+2

यह केवल जेसन/जेएस फ़ाइल पर काम करेगा। यह अन्य प्रकार की फाइलों जैसे xml पर काम नहीं करेगा। बेहतर दृष्टिकोण path.join() – Ganeshkumar

+0

यदि आप किसी अन्य फ़ोल्डर से फ़ाइल को कॉल कर रहे हैं तो यह बहुत अच्छा समाधान नहीं है। यदि आप संरचना- src-> utils-> someUtilFile.js और दूसरी फ़ाइल src-> logic-> someLogic.js भी हैं और आप ../../utils/someUtilFile.js का उपयोग करेंगे, यह काम करेगा। लेकिन अगर आप किसी भिन्न संरचना निर्देशिका से कुछUtilFile.js को कॉल कर रहे हैं तो यह काम नहीं करेगा। –

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