2013-06-20 11 views
15

में स्थित स्थैतिक फ़ाइलों की सेवा करने में विफल रहता है I Heroku का उपयोग करके एक नोडजेएस अनुप्रयोग तैनात कर रहा हूं। स्थिर फाइलों की सेवा करने के एक छोटे से मुद्दे को छोड़कर सबकुछ ठीक काम करता है।हेरोकू पर नोडज को तैनात करना उपफोल्डर्स

मैं निम्नलिखित विन्यास

app.use(express.static(__dirname + '/htdocs')); 

जब मैं स्थिर उप फ़ोल्डर में स्थित फ़ाइलों की सेवा करने की कोशिश को छोड़कर ठीक काम करता है है।

www.example.com/bar.js // इस कार्य करता है फ़ाइल

www.example.com/foo/bar.js // इस नहीं मिल सकता है /htdocs/bar.js फ़ाइल /htdocs/foo/bar.js

मुझे लगता है कि कहने के लिए अपने स्थानीय वातावरण सब कुछ पर भूल गया ठीक काम करता है, Heroku के साथ कुछ हो सकता है, लेकिन मैं कारण नहीं मिल रहा। क्या किसी को पहले यह समस्या थी? समाधान की?

धन्यवाद!

उत्तर

12

अंत में मैं समाधान मिल गया।

मुझे लगता है कि बस अपना package.json में NPM संस्करण जोड़ हल किया।

{ 
    "name": "bla", 
    "version": "0.0.1", 
    "dependencies": { 
     "express": "3.2.6" 
    }, 
    "engines": { 
     "node": "0.10.11", 
     "npm": "1.2.25" 
    } 
} 
+2

मेरी समस्या का समाधान नहीं किया, अभी भी शोध कर रहा है ... –

10

जाहिर है, के रूप में इस प्रश्न में व्याख्या करते हैं: Heroku(Cedar) + Node + Express + Jade Client-side javascript files in subdirectory work locally with foreman+curl but not when pushed to Heroku, आप __dirname Heroku साथ उपयोग नहीं कर सकते।

विकल्प प्रतीत हो रहा है:

// आपके web.js
process.env.PWD = process.cwd()

// तब
एप्लिकेशन के शीर्ष पर। उपयोग (express.static (process.env.PWD + '/ htdocs'));

+0

अरे! मुझे पहले से ही पता चला है और काम नहीं किया ... लेकिन मुझे वास्तव में अभी आत्मा मिली है !!! यह सिर्फ मेरा पैकेज था। जेसन, मैं एनपीएम संस्करण डालना भूल गया, मुझे नहीं पता क्यों, लेकिन यह पूरी चीज हल करता है। धन्यवाद! – ius

+0

ओह ठीक है। खुशखबरी ! –

+0

मुझे लगता है कि ऐसा इसलिए है क्योंकि एनपीएम के सही संस्करण को डाउनलोड करने के लिए हेरोकू की आवश्यकता है। और डिफ़ॉल्ट रूप से इसे एक बहुत पुराना डाउनलोड करना चाहिए।हम नहीं जानते कि तब क्या होना चाहिए :) –

0

मैं थोड़ी देर के लिए इस के साथ संघर्ष किया और स्थिर फ़ोल्डर के रूप में (जिले से /) सार्वजनिक उपयोग करते हुए/पर वापस लौटने के लिए किया था - अब

0

पूरी तरह से काम करता है मेरे मामले में, मैं अपने निर्माण में उठाया गया कदम था जो वास्तव में /public फ़ोल्डर को मिटा रहा था, और उसके बाद bundle.js और bundle.css में वापस जोड़ रहा था।

तो अपने स्थानीय पर मैं इसे नहीं देखा है, लेकिन जब यह Heroku में तैनात किया गया संपत्ति लापता हैं।

5

यदि इन समाधानों में से कोई भी काम, जाँच my solution

सुनिश्चित करें कि आपकी निर्देशिका की उप निर्देशिका आपके गिट भंडार में जोड़ दी गई है।

+2

यह मेरे लिए काम किया। मैं .gitignore में मेरी/dist निर्देशिका को अनदेखा कर रहा था। मैंने इसे हटा दिया और स्थैतिक फ़ाइल लिंक अपेक्षित के रूप में काम किया। – mepler

+0

मेरे लिए वही है, अब मुझे पता है कि क्या .gitignores करता है: पी – John

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