2016-09-21 9 views
7

मैं अपने AngularJS ऐप में पर्यावरण चर लोड करने का सबसे अच्छा तरीका जानने का प्रयास कर रहा हूं। मैं वर्तमान में स्थिरांक का उपयोग कर रहा हूं, जो वेबपैक definePlugin में परिभाषित लोगों से उनके मूल्य लेते हैं। हालांकि, यह हेरोकू के साथ एक समस्या का कारण बनता है क्योंकि कोड को स्टेजिंग के लिए धक्का दिया जाता है, और जब इसे उत्पादन में बढ़ावा दिया जाता है, तो इसे पुनर्निर्माण नहीं किया जाता है, इसलिए वेबपैक definePlugin स्थिरांक स्टेजिंग पर्यावरण चर होते हैं।हेरोकू पर कोणीय ऐप वेबपैक का उपयोग करके बनाया गया - पर्यावरण चर?

मैंने रन एपीआई पर अपने एपीआई से पर्यावरण चर का अनुरोध करने और फिर मेरे सामने वाले अंत में उपयोग किए जाने वाले स्थिरांक के रूप में सेट करने पर ध्यान दिया है, लेकिन मैं यह नहीं समझ सकता कि शुरुआती .constant(..) के बाहर प्रोग्रामिक रूप से स्थिरांक कैसे सेट करें अवसर।

यदि कोई वेबपैक (और ग्रंट नहीं) का उपयोग करते समय सामने वाले अंत में पर्यावरण चर को लोड करने के आसपास किसी भी अन्य बेहतर प्रथाओं को जानता है तो कृपया मुझे बताएं।

उत्तर

1

यदि आप अपने सर्वर में node.js (और npm) का उपयोग कर रहे हैं, तो आप "npm postinstall" की बजाय "npm prestart" स्क्रिप्ट में वेबपैक चलाने पर विचार कर सकते हैं।

इस तरह वेबपैक हर बार आपके हरोकू डायनोज़ शुरू या रीसायकल चलाएगा, और इसलिए उचित हेरोकू पाइपलाइन चरण से आपकी env var परिभाषाएं उठाएंगी। इसलिए, जब आपका स्टेजिंग डायनास प्रारंभ होता है, तो वेबपैक आपकी स्टेजिंग एनवी var परिभाषाओं को उठाएगा, और जब आपका उत्पादन डायनास शुरू होता है, तो वेबपैक आपके उत्पादन env var परिभाषाओं को उठाएगा।

हालांकि, इस दृष्टिकोण का नुकसान यह है कि रीसाइक्लिंग के दौरान आपके डायनोस सेवा से बाहर हैं, क्योंकि अब उन्हें शुरू करने से पहले वेबपैक चलाने की आवश्यकता है।

+0

क्या यह तब भी होगा जब ऐप को किसी कारण से यादृच्छिक रूप से रीबूट किया गया हो? यह एक बहुत ही साफ विकल्प है, लेकिन मुझे यकीन है कि यह कितना खतरनाक है। –

+0

इस विकल्प के साथ हर बार एनपीएम शुरू होने पर वेबपैक चलाएगा। तो, हेरोकू पर, इसका मतलब है कि जब भी ऐप रीसायकल करता है, या किसी भी अन्य कारण के लिए पुनरारंभ होता है (जैसे कि जब आप पर्यावरण चर बदलते हैं, एक पाइपलाइन ऐप से दूसरे आदि में प्रचार करते हैं)। –

+0

हालांकि, जैसा कि ध्यान दिया गया है, यह समाधान रीसाइक्लिंग आदि के दौरान आपके डायनोस के डाउनटाइम में जोड़ता है। आपको यह सुनिश्चित करना होगा कि यह आपके ऐप के लिए कोई समस्या नहीं है। इसके आसपास काम करने के तरीके हैं, बेशक (उदा। Https://devcenter.heroku.com/articles/preboot देखें), लेकिन आपको निहितार्थों से अवगत होना चाहिए। –

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