2017-03-20 8 views
8

मैं एक एप्लिकेशन को फायरबेस में स्विच करने और बैकएंड को फायरबेस क्लाउड फ़ंक्शंस में स्थानांतरित करने का प्रयास कर रहा हूं।क्लाउड फ़ंक्शंस के साथ निजी एनपीएम पैकेज का उपयोग कैसे करें?

यह एप्लिकेशन एक निर्भरता के रूप में एक निजी पैकेज (@org/name) का उपयोग कर रहा है।

मैं अलग समाधान की कोशिश की है, लेकिन कोई भी काम करने के लिए लगता है:

  • एक NPM_TOKEN env दर्रा: संभव नहीं लोवरकेस विन्यास
  • npm install को Firebase सीमा के बाद से कार्यों निर्देशिका में मॉड्यूल
  • बनाएं YARN और NPM ऑथ टोकन

दोनों के साथ फ़ंक्शन निर्देशिका में .npmrc फ़ाइल सीटीएस के साथ तैनाती:

Deploy Error: Build failed: Module @org/name not found in npm registry

निजी संकुल Firebase पर समर्थित हैं?

+0

मैं कल ही इस मुद्दे में भाग! उचित कार्यवाही खोजने के बाद, मैंने [इस अन्य समान प्रश्न] के जवाब में विवरण साझा किए (https://stackoverflow.com/questions/47643386/auto-deploy-google-cloud-functions-from-google-cloud- संसाधन नियंत्रण/48568937 # 48568937)। उम्मीद है की यह मदद करेगा! – erichiggins

उत्तर

3

आप संकुल हैं कि शामिल करना चाहते हैं एनपीएम के माध्यम से सार्वजनिक रूप से उपलब्ध नहीं है, आपको उन्हें स्वयं पैकेज करना होगा और उन्हें अपने फ़ंक्शंस फ़ोल्डर में शामिल करना होगा। जब आप तैनात करते हैं तो संपूर्ण फ़ंक्शंस फ़ोल्डर अपलोड किया जाता है, इसलिए आपको स्थानीय चीज़ों की तरह चीजों की आवश्यकता होनी चाहिए।

+2

धन्यवाद, मैंने एक बिल्ड स्क्रिप्ट और 'एनपीएम पैक' के साथ किया है। लेकिन मुझे लगता है कि फायरबेस को इसका समर्थन करना चाहिए ('.npmrc' फ़ाइल का समर्थन करें)। –

-2

मैं भी एक ही मुद्दा हो रही थी, लेकिन तब मुझे एहसास हुआ कि मैं package.json फ़ाइल जो रूप में एक ही निर्देशिका में होना चाहिए करने के लिए निर्भरता को जोड़ने के लिए भूल गया था अपने index.js

4

वर्तमान में ऐसा करने का कोई सुविधाजनक तरीका नहीं है।

ऐसा लगता है कि जीसीएफ एनपीएम क्लाइंट से एनपीएम रजिस्ट्री से लाने के लिए उपयोग नहीं करता है और इसके बजाय इसे सीधे लाता है। यह मानक .npmrc फ़ाइल या किसी अन्य विधि का उपयोग करने से रोकता है npm क्लाइंट जानता है।

$ npm pack @org/name 
$ npm install --save tarball-output.tgz 

यह आपके package.json और Google क्लाउड कार्य करने के लिए स्थानीय टारबॉल जोड़ना होगा इसका इस्तेमाल करने को पता चल जाएगा:

आप पैक करने के लिए और स्थानीय स्तर पर अपने पैकेज को स्थापित करने और स्रोत कोड के लिए यह वादा किया है।

मैं वास्तव में चाहता हूं कि वे परियोजना रूट पथ से वैकल्पिक रूप से .npmrc पढ़ लेंगे या वैकल्पिक रूप से, हम उन्हें एक टोकन को एनवी चर के रूप में पास कर सकते हैं।

इसके बारे में एक खुला मुद्दा है: https://issuetracker.google.com/issues/36665861

+0

मैंने कोशिश की लेकिन फ़ायरबेस डिप्लो कमांड के साथ विफल रहा: एनपीएम ईआरआर! addLocal /path/to/my.tgz इंस्टॉल नहीं कर सका – okhobb

0

संदर्भ के साथ Google issue tracker करने के लिए, यह तय किया गया है। अधिक जानकारी के लिए आप Google Cloud Platform पर प्रलेखन की जांच कर सकते हैं।

निजी मॉड्यूल का उपयोग करते हुए

क्रम में एक निजी NPM मॉड्यूल का उपयोग करने के लिए आपको (प्रमाणीकरण टोकन) एक .npmrc समारोह के निर्देशिका में स्थित फ़ाइल में NPM रजिस्ट्री के लिए क्रेडेंशियल प्रदान करने की है। आप आसानी से .npmrc फ़ाइल कॉपी कर सकते हैं जो आपके घर निर्देशिका में बनाई गई थी जब आप एनपीएम लॉगिन कमांड का उपयोग करके एनपीएम में लॉग इन करते थे।

यदि आप निजी भंडार का उपयोग नहीं कर रहे हैं, तो .npmrc फ़ाइल शामिल न करें, क्योंकि यह आपके कार्यों के लिए तैनाती का समय बढ़ा सकता है।

यदि कोई समस्या बनी रहती है, तो कृपया Google issue tracker पर रिपोर्ट करें, वे जांच के लिए फिर से खुलेंगे।

1

Google क्लाउड फ़ंक्शंस अब निजी एनपीएम पैकेज का समर्थन करता है।

क्रम में एक निजी NPM मॉड्यूल का उपयोग करने के लिए आपको (प्रमाणीकरण टोकन) एक .npmrc समारोह के निर्देशिका में स्थित फ़ाइल में NPM रजिस्ट्री के लिए क्रेडेंशियल प्रदान करने के लिए है। जब आप एनपीएम लॉगिन कमांड का उपयोग करते हुए एनपीएम में लॉग इन करते हैं तो आप अपनी होम निर्देशिका में बनाए गए पर .npmrc फ़ाइल की प्रतिलिपि बना सकते हैं।

यदि आप निजी रिपॉजिटरीज़ का उपयोग नहीं कर रहे हैं, तो .npmrc फ़ाइल शामिल न करें, क्योंकि यह आपके फ़ंक्शंस के लिए तैनाती का समय बढ़ा सकता है।

स्रोत: https://cloud.google.com/functions/docs/writing/dependencies#using_private_modules

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