फायरबेस के लिए क्लाउड फ़ंक्शंस में कॉर्स को सक्षम करना


141

मैं वर्तमान में सीख रहा हूं कि फायरबेस के लिए नए क्लाउड फ़ंक्शंस का उपयोग कैसे करें और मुझे जो समस्या हो रही है वह यह है कि मैं एक AJAX अनुरोध के माध्यम से लिखे गए फ़ंक्शन तक नहीं पहुंच सकता। मुझे "नहीं 'पहुंच-नियंत्रण-अनुमति-उत्पत्ति' त्रुटि मिलती है। यहाँ मेरे द्वारा लिखे गए फ़ंक्शन का एक उदाहरण है:

exports.test = functions.https.onRequest((request, response) => {
  response.status(500).send({test: 'Testing functions'});
})

फ़ंक्शन इस url में बैठता है: https://us-central1-fba-shipper-140ae.cloudfunctions.net/test

Firebase डॉक्स फ़ंक्शन के अंदर CORS मिडलवेयर को जोड़ने का सुझाव देता है, मैंने इसे आज़माया है, लेकिन यह मेरे लिए काम नहीं कर रहा है: https://firebase.google.com/docs/functions/http-events

मैंने इस तरह से इसे किया:

var cors = require('cors');    

exports.test = functions.https.onRequest((request, response) => {
   cors(request, response, () => {
     response.status(500).send({test: 'Testing functions'});
   })
})

मैं क्या गलत कर रहा हूं? मैं इस के साथ किसी भी मदद की सराहना करेंगे।

अपडेट करें:

डग स्टीवेन्सन के जवाब ने मदद की। जोड़ा जा रहा है ({मूल: सच}) समस्या का समाधान हो, मैं भी परिवर्तन करना पड़ा response.status(500)करने के लिए response.status(200)जो मैं पूरी तरह से पहली बार में याद किया।


इसके अलावा डॉक्स में एक नमूना यहाँ
काटो

मेरे पास कुछ कार्य हैं जो प्रदान किए गए समाधान के साथ काम करते हैं, लेकिन अब एक नए फ़ंक्शन की कोशिश कर रहा हूं जो अनिवार्य रूप से मेरे index.html के शीर्ष पर खुले ग्राफ़ जोड़ता है और अपडेट किए गए index.html को वापस करता है और मुझे यह काम करने के लिए नहीं मिल सकता है :( रखना पहुंच-नियंत्रण --- त्रुटि
TheeBen

2
ऊपर की तरह कॉर्स () में आने वाले अनुरोध को लपेटना मेरे लिए काम करने वाली एकमात्र चीज थी
चार्ल्स हैरिंग

क्या आप अपने "अपडेट" को यह रेखांकित करने के लिए संपादित कर सकते हैं कि कॉर्स मिडलवेयर की आवश्यकता है? यह कुछ लोगों को कुछ समय बचाएगा
एंटोनी वेबर

जवाबों:


151

फायरबेस टीम द्वारा प्रदान किए गए दो नमूना कार्य हैं जो कॉर्स के उपयोग को प्रदर्शित करते हैं:

दूसरा नमूना आपके द्वारा वर्तमान में उपयोग किए जा रहे कॉर्स के साथ काम करने के एक अलग तरीके का उपयोग करता है।

इसके अलावा, इस तरह के आयात पर विचार करें, जैसा कि नमूनों में दिखाया गया है:

const cors = require('cors')({origin: true});

2
धन्यवाद! जोड़ने ({मूल: सत्य}) ने मदद की।
एंड्री

2
अच्छा, आपको निश्चित origin: trueरूप से इसे छोड़ने की आवश्यकता है क्योंकि यह काम नहीं करेगा
स्कॉट

4
यह इस तरह दिखता है, जहां पहुंच की अनुमति देने के लिए डोमेन के श्वेतसूची को परिभाषित किया गया है? और सेटिंग origin: trueकिसी भी डोमेन को एक्सेस करने की अनुमति देता है? ( npmjs.com/package/cors ) @Doug Stevenson क्या आपको लगता है कि फायरबेस क्लाइंट / सर्वर के लिए आवश्यक बुनियादी कार्यों पर एक डॉक्टर लिख सकता है। सैंपल रेपो अच्छा है, लेकिन हम इस अतिरिक्त बिट की आवश्यकता से चूक गए थे।
एलन

9
किसी को भी अपने बैक-एंड में CORS समर्थन जोड़ने के इच्छुक: कृपया सुनिश्चित करें कि आप परिणामों को समझते हैं और इसे ठीक से कैसे कॉन्फ़िगर करें। "उत्पत्ति: सच" परीक्षण के लिए अच्छा है, लेकिन यह पूरे उद्देश्य को हरा देता है :)
dSebastien

1
Google क्लाउड फ़ंक्शंस वाइल्डकार्ड मूल की अनुमति नहीं देते हैं: cloud.google.com/functions/docs/writing/…
Corey Cole

73

आप CORS को क्लाउड फ़ंक्शन में इस तरह सेट कर सकते हैं

response.set('Access-Control-Allow-Origin', '*');

corsपैकेज आयात करने की आवश्यकता नहीं है


2
यह पूरी तरह से मेरे मामले के लिए काम करता है, एक क्लाउड फ़ंक्शन जो मेलचम्प एपीआई को एक्सएचआर कॉल करता है।
8

1
यही उत्तर की जरूरत है।
जिमी केन

1
Google क्लाउड फ़ंक्शंस वाइल्डकार्ड मूल की अनुमति नहीं देते हैं: cloud.google.com/functions/docs/writing/…
Corey Cole

4
@CoreyCole मुझे लगता है कि केवल अगर आपको Authorizationहेडर जोड़ने की आवश्यकता है । ऊपर ठीक काम करने लगता है।
स्टुअर्ट मेमो

कोड की इस पंक्ति को कहां रखा जाए? क्लाउड फंक्शन का कौन सा हिस्सा है?
एंटोनियो ओयो

41

टाइपस्क्रिप्ट में ऐसा करने की कोशिश करने वाले किसी के लिए भी यह कोड है:

import * as cors from 'cors';
const corsHandler = cors({origin: true});

export const exampleFunction= functions.https.onRequest(async (request, response) => {
       corsHandler(request, response, () => {});
       //Your code here
});

3
समाधान आपको क्लाउड फ़ंक्शंस (बहुत खराब) और उचित async / प्रतीक्षा कार्यक्षमता पर लॉगिंग खो देगा, आप फ़ंक्शन कॉल को समय से पहले कॉलबैक के अंदर लंबी कॉल पर समाप्त होने का जोखिम उठाते हैं।
ओलिवर डिक्सन

2
Google क्लाउड फ़ंक्शंस वाइल्डकार्ड मूल की अनुमति नहीं देते हैं: cloud.google.com/functions/docs/writing/…
Corey Cole

29

जानकारी का एक अतिरिक्त टुकड़ा, बस कुछ समय के बाद उन गुगली करने वालों की खातिर: यदि आप फायरबेस होस्टिंग का उपयोग कर रहे हैं, तो आप फिर से लिखना भी शुरू कर सकते हैं, ताकि उदाहरण के लिए एक url जैसे (firebase_hosting_host / api / myfunction रीडायरेक्ट) firebase_cloudfunctions_host) / doStuff फ़ंक्शन। इस तरह, चूंकि पुनर्निर्देशन पारदर्शी और सर्वर-साइड है, इसलिए आपको कॉर्स से निपटने की आवश्यकता नहीं है।

आप फायरबेस में एक फिर से लिखना अनुभाग के साथ सेट कर सकते हैं। आगजनी:

"rewrites": [
        { "source": "/api/myFunction", "function": "doStuff" }
]

1
imo, यह सबसे अच्छा जवाब है, क्योंकि यह किसी भी अतिरिक्त सुरक्षा समस्याओं को जोड़े बिना वास्तविक समस्या को हल करता है। इस तरह से क्लाउड फ़ंक्शंस को बाकी डोमेन की तरह ही सेवा दी जाती है और आपको किसी कॉर्स की भी आवश्यकता नहीं होती है।
koljaTM

3
यह वास्तव में एक महान विशेषता है, लेकिन यह वर्तमान में केवल तभी काम करता है जब फ़ंक्शन डिफ़ॉल्ट क्षेत्र (यूएस-मध्य 1) ​​में रहते हैं। मैं विलंबित कारणों से यूरोप-वेस्ट 1 में अपने कार्यों को तैनात करना चाहता था और इस मुद्दे में भाग गया: github.com/firebase/firebase-tools/issues/842
Alex Suzuki

रीडायरेक्ट ठीक काम करता है और URL को क्लीनर बनाता है, लेकिन मुझे यह पता नहीं चला है कि GET के मापदंडों को कैसे पास किया जाए। फ़ंक्शन (पुनर्लेखन के बाद) को बिना मापदंडों के कहा जाता है।
रोयप्पा

20

कोई कोर समाधान मेरे लिए काम किया ... अब तक!

यकीन नहीं होता कि कोई और भी उसी मुद्दे पर भागता है जो मैंने किया था, लेकिन मैंने कॉर्स को 5 अलग-अलग तरीकों से स्थापित किया, जो मुझे मिले उदाहरणों से और कुछ भी काम नहीं लगा। मैंने प्लंकर के साथ एक न्यूनतम उदाहरण स्थापित किया, यह देखने के लिए कि क्या यह वास्तव में एक बग था, लेकिन उदाहरण खूबसूरती से भाग गया। मैंने फायरबेस फ़ंक्शन लॉग्स (फायरबेस कंसोल में पाया गया) की जांच करने का फैसला किया, यह देखने के लिए कि क्या मुझे कुछ भी बता सकता है। मेरे नोड सर्वर कोड में मुझे कुछ त्रुटियां थीं , कि कॉर्स से संबंधित , कि जब मैंने डिबग किया तो मुझे मेरे कॉर्स त्रुटि संदेश जारी किया । मुझे नहीं पता कि कॉर्स के लिए असंबंधित कोड त्रुटियां एक CorS त्रुटि प्रतिक्रिया क्यों देती हैं, लेकिन इसने मुझे कई घंटों के लिए गलत खरगोश छेद का नेतृत्व किया ...

यदि कोई कोर समाधान काम नहीं करता है और आपके पास किसी भी इरॉस को डिबग करता है, तो tl; dr - अपने फायरबेस फ़ंक्शन लॉग की जांच करें


1
इसने मुझे पागल कर दिया। मेरे मामले में यह कोड में भी त्रुटि नहीं थी! यह Error: quota exceeded (Quota exceeded for quota group 'NetworkIngressNonbillable' and limit 'CLIENT_PROJECT-1d' of service 'cloudfunctions.googleapis.com इतना मूल रूप से मुक्त कोटा पार हो गया था और फ़ंक्शन ने कॉर्स त्रुटि लौटा दी
स्टैनिस्लॉ बुज़ुनको

यहां कुछ समय दें, सर्वर से एक ही त्रुटि cors के रूप में लौटा दी गई है: त्रुटि: आंतरिक मूल रूप से त्रुटि है। यह त्रुटि तब भी होगी यदि आप गलत फ़ंक्शन चलाते हैं, उदाहरण के लिए एक फ़ंक्शन का नाम गलत है
हेनरिक बोगेलुंड लवस्टेंस

जब आप क्लाउड फ़ंक्शन के भीतर Google reCAPTCHA सत्यापन के लिए अनुरोध करने का प्रयास करते हैं, तो ब्राउज़र आपको CORS त्रुटि भी फेंकता है। जब मैं फायरबेस कंसोल फ़ंक्शन लॉग की जांच करता हूं, तो यह कहता है access to external network resources not allowed if the billing account is not enabled। बिलिंग खाते को सक्षम करने के बाद, यह पूरी तरह से काम करता है। यह भी गैर-कॉर्स संबंधित उदाहरणों में से एक है, लेकिन एक कॉर्स त्रुटि फेंक दी जाती है।
एंटोनियो ओयो

19

मेरे पास उसके सवाल के जवाब में @Andreys का थोड़ा सा जोड़ है।

ऐसा लगता है कि आपको cors(req, res, cb)फ़ंक्शन में कॉलबैक कॉल करने की आवश्यकता नहीं है , इसलिए आप कॉलबैक में अपने सभी कोड को एम्बेड किए बिना, अपने फ़ंक्शन के शीर्ष पर कॉर्स मॉड्यूल को कॉल कर सकते हैं। यह बहुत जल्दी है यदि आप बाद में cors को लागू करना चाहते हैं।

exports.exampleFunction = functions.https.onRequest((request, response) => {
    cors(request, response, () => {});
    return response.send("Hello from Firebase!");
});

उद्घाटन पोस्ट में बताए अनुसार init cors को न भूलें:

const cors = require('cors')({origin: true});


1
यह तब काम करता है जब अन्य SO उत्तर हेडर को मैन्युअल रूप से सेट करने के साथ नहीं होते हैं
जिम फैक्टर

यह काम करता है लेकिन यह TSlint त्रुटि का कारण बन सकता है यदि आपने इसे सक्षम किया था और आप फायरबेस पर तैनात नहीं कर सकते। इसे दूर करने के लिए कोर्स बंद करने के अंदर प्रतिक्रिया डालेंcors(request, response, () => { return response.send("Hello from Firebase!"); });
सर्पिल आउट

1
2 त्रुटियाँ यहाँ दोस्तों। पेहला। कोर्सेस फ़ंक्शन के बाद कुछ भी दो बार चलेगा (चूंकि पहला अनुरोध प्रीफ़्लाइट है)। अच्छा नही। दूसरा, @SpiralOut आपका समाधान आपको क्लाउड फ़ंक्शंस (बहुत खराब) और उचित async / प्रतीक्षा कार्यक्षमता पर लॉगिंग खो देगा, आप फ़ंक्शन सामग्री को समय से पहले कॉलबैक के अंदर समाप्त होने का जोखिम उठाते हैं।
ओलिवर डिक्सन

@SpiralOut आप बस
Vlad

1
पिछले वर्ष में gcf के बारे में बहुत कुछ जानने के बाद, मैं इस उत्तर की अनुशंसा नहीं करूँगा। यह त्वरित प्रोटोटाइप के लिए आसान हो सकता है, लेकिन वास्तविक उत्पादन के मामलों में इससे बचें
जाप वेइजलैंड

11

यह मददगार हो सकता है। मैंने एक्सप्रेस (कस्टम URL) के साथ फ़ायरबेस HTTP क्लाउड फ़ंक्शन बनाया

const express = require('express');
const bodyParser = require('body-parser');
const cors = require("cors");
const app = express();
const main = express();

app.post('/endpoint', (req, res) => {
    // code here
})

app.use(cors({ origin: true }));
main.use(cors({ origin: true }));
main.use('/api/v1', app);
main.use(bodyParser.json());
main.use(bodyParser.urlencoded({ extended: false }));

module.exports.functionName = functions.https.onRequest(main);

कृपया सुनिश्चित करें कि आपने पुन: लिखना खंड जोड़ा है

"rewrites": [
      {
        "source": "/api/v1/**",
        "function": "functionName"
      }
]

1
आपका जवाब बहुत कम है मेरे दोस्त, अब तक का सबसे अच्छा जवाब।
अविराम वर्जिल

धन्यवाद। @AvramVirgil
सैंडी

यह सबसे तेज और आसान था, धन्यवाद!
गौरव कक्कड़

8

मैंने उस पर एक छोटा सा अंश प्रकाशित किया है:

https://mhaligowski.github.io/blog/2017/03/10/cors-in-cloud-functions.html

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

उम्मीद है की वो मदद करदे!


4
यकीन नहीं है कि हैकिंग से आपका क्या मतलब है? थोड़ा विस्तार करने के लिए देखभाल? अपना पोस्ट पढ़ें लेकिन मैं आपको इसका उल्लेख नहीं करता
TheeBen

1
यहाँ cors मॉड्यूल के लेखक; "हैकिंग" mhaligowski का सीधा सा मतलब है कि उसे कॉर्स मॉड्यूल को कॉल करने के लिए लपेटना पड़ता है ताकि यह मेल खाता हो, जिस तरह से एक्सप्रेस मिडलवेयर को कॉल करता है (यानी रीक और रेस के बाद तीसरे पैरामीटर के रूप में एक फ़ंक्शन सप्लाई करता है)
ट्रॉय

4

अगर वहां मेरे जैसे लोग हैं: यदि आप उसी फ़ंक्शन से क्लाउड फ़ंक्शन को कॉल करना चाहते हैं जैसे कि क्लाउड स्वयं कार्य करता है, तो आप फ़ायरबेस sdk init कर सकते हैं और onCall पद्धति का उपयोग कर सकते हैं। यह आप के लिए सब कुछ संभाल लेंगे:

exports.newRequest = functions.https.onCall((data, context) => {
    console.log(`This is the received data: ${data}.`);
    return data;
})

इस फ़ंक्शन को इस तरह से कॉल करें:

// Init the firebase SDK first    
const functions = firebase.functions();
const addMessage = functions.httpsCallable(`newRequest`);

फायरबेस डॉक्स: https://firebase.google.com/docs/functions/callable

यदि आप यहाँ SDK को सम्मिलित नहीं कर सकते हैं तो अन्य सुझावों का सार है:


3
वास्तव में जब मैं ब्राउज़र पर onCall func का उपयोग करता हूं तो मुझे cors त्रुटि मिली। क्या मैं इस अनुरोध में कॉस्टोम हेडर सेट कर सकता हूं?
विक्टर हार्डुबज

4

बिना किसी 'cors' लाइब्रेरी को आयात किए बिना cors को सक्षम करने का एक तरीका मिला। यह Typescriptक्रोम संस्करण 81.0 में भी इसके साथ काम करता है और इसका परीक्षण करता है ।

exports.createOrder = functions.https.onRequest((req, res) => {
// browsers like chrome need these headers to be present in response if the api is called from other than its base domain
  res.set("Access-Control-Allow-Origin", "*"); // you can also whitelist a specific domain like "http://127.0.0.1:4000"
  res.set("Access-Control-Allow-Headers", "Content-Type");

  // your code starts here

  //send response
  res.status(200).send();
});

3

क्या यह लायक है के लिए मैं एक ही मुद्दा था जब में गुजर रहा appहै onRequest। मुझे एहसास हुआ कि मुद्दा फायरबेस फ़ंक्शन के लिए अनुरोध यूआरएल पर एक अनुगामी स्लैश था। एक्सप्रेस की तलाश थी '/'लेकिन मेरे पास फंक्शन पर ट्रेलिंग स्लैश नहीं था [project-id].cloudfunctions.net/[function-name]। कोरस त्रुटि एक झूठी नकारात्मक थी। जब मैंने अनुगामी स्लैश को जोड़ा, तो मुझे वह प्रतिक्रिया मिली जिसकी मैं उम्मीद कर रहा था।


यह भी सुनिश्चित करें कि आप अपने को जोड़ने [project-id]के रूप में इस मुद्दे था मैं का सामना करना पड़ा
अनप्लग

3

मेरे अनुरोध में प्राधिकरण के रूप में केवल यही तरीका मेरे लिए काम करता है:

exports.hello = functions.https.onRequest((request, response) => {
response.set('Access-Control-Allow-Origin', '*');
response.set('Access-Control-Allow-Credentials', 'true'); // vital
if (request.method === 'OPTIONS') {
    // Send response to OPTIONS requests
    response.set('Access-Control-Allow-Methods', 'GET');
    response.set('Access-Control-Allow-Headers', 'Content-Type');
    response.set('Access-Control-Max-Age', '3600');
    response.status(204).send('');
} else {
    const params = request.body;
    const html = 'some html';
    response.send(html)
} )};

Google क्लाउड फ़ंक्शंस वाइल्डकार्ड मूल की अनुमति नहीं देते हैं: cloud.google.com/functions/docs/writing/…
Corey Cole

3

यदि आप cors plugin का उपयोग नहीं करते हैं / नहीं कर सकते हैं, setCorsHeaders()तो हैंडलर फ़ंक्शन में फ़ंक्शन को पहली बार कॉल करना भी काम करेगा।

जब भी वापस उत्तर दें तब भी उत्तर / असफल कार्यों का उपयोग करें।

const ALLOWED_ORIGINS = ["http://localhost:9090", "https://sub.example.com", "https://example.com"]


// Set CORS headers for preflight requests
function setCorsHeaders (req, res) {
  var originUrl = "http://localhost:9090"


  if(ALLOWED_ORIGINS.includes(req.headers.origin)){
    originUrl = req.headers.origin
  }

  res.set('Access-Control-Allow-Origin', originUrl);
  res.set('Access-Control-Allow-Credentials', 'true');

  if (req.method === 'OPTIONS') {
    // Send response to OPTIONS requests
    res.set('Access-Control-Allow-Methods', 'GET,POST','PUT','DELETE');
    res.set('Access-Control-Allow-Headers', 'Bearer, Content-Type');
    res.set('Access-Control-Max-Age', '3600');
    res.status(204).send('');
  }
}

function respondError (message, error, code, res) {
  var response = {
    message: message,
    error: error
  }
  res.status(code).end(JSON.stringify(response));
}


function respondSuccess (result, res) {
  var response = {
    message: "OK",
    result: result
  }
  res.status(200).end(JSON.stringify(response));
}

2

यदि आप स्थानीय रूप से फायरबेस ऐप का परीक्षण कर रहे हैं, तो आपको localhostक्लाउड के बजाय फ़ंक्शंस को इंगित करने की आवश्यकता है । जब आप इसे अपने वेब ऐप पर उपयोग करते हैं तो डिफ़ॉल्ट रूप से, firebase serveया firebase emulators:startलोकलहोस्ट के बजाय सर्वर पर कार्य करता है।

Html सिर में स्क्रिप्ट को फ़ायरबेस इनइट स्क्रिप्ट के बाद जोड़ें:

 <script>
      firebase.functions().useFunctionsEmulator('http://localhost:5001')
 </script> 

सर्वर पर कोड को तैनात करते समय इस स्निपेट को निकालना सुनिश्चित करें।


2

बदलते trueहुए "*"मेरे लिए चाल चली गई , तो यह इस तरह से है:

const cors = require('cors')({ origin: "*" })

मैंने इस दृष्टिकोण की कोशिश की क्योंकि सामान्य तौर पर, इस तरह से यह प्रतिक्रिया हैडर सेट होता है:

'Access-Control-Allow-Origin', '*'

ध्यान रखें कि यह किसी भी डोमेन को आपके समापन बिंदुओं को कॉल करने की अनुमति देगा इसलिए यह सुरक्षित नहीं है।

इसके अतिरिक्त, आप डॉक्स पर अधिक पढ़ सकते हैं: https://github.com/expressjs/cors


1

यदि आप एक्सप्रेस का उपयोग नहीं कर रहे हैं या बस कोर का उपयोग करना चाहते हैं। निम्नलिखित कोड को हल करने में मदद करेगा

const cors = require('cors')({ origin: true, });   
exports.yourfunction = functions.https.onRequest((request, response) => {  
   return cors(request, response, () => {  
        // *Your code*
    });
});

0

मेरे मामले में त्रुटि क्लाउड फ़ंक्शन इनवॉकर सीमा पहुंच के कारण हुई थी। कृपया क्लाउड फ़ंक्शन इनवॉकर में allUsers जोड़ें। कृपया लिंक को पकड़ें । कृपया अधिक जानकारी के लिए लेख देखें


कृपया अपने उत्तर में लिंक की गई सामग्री की कुछ व्याख्या प्रदान करें, यह प्रासंगिक क्यों है और जैसे
जुगनू

0

यदि अन्य समाधानों में से कोई भी काम नहीं करता है, तो आप कॉल की शुरुआत में नीचे दिए गए पते को जोड़ने की कोशिश कर सकते हैं ताकि कॉर्स को पुनः निर्देशित किया जा सके:

https://cors-anywhere.herokuapp.com/

JQuery AJAX अनुरोध के साथ नमूना कोड:

$.ajax({
   url: 'https://cors-anywhere.herokuapp.com/https://fir-agilan.web.app/gmail?mail=asd@gmail.com,
   type: 'GET'
});

0

मेरे अनुभव का टुकड़ा जोड़ना। मैंने यह जानने में घंटों की कोशिश की कि मुझे कोरस त्रुटि क्यों हुई।

ऐसा होता है कि मैंने अपने क्लाउड फ़ंक्शन का नाम बदल दिया है (पहले मैं एक बड़े उन्नयन के बाद कोशिश कर रहा था)।

इसलिए जब मेरा फायरबेस ऐप एक गलत नाम के साथ क्लाउड फ़ंक्शन को कॉल कर रहा था, तो उसे 404 त्रुटि फेंकनी चाहिए थी, न कि कोरस त्रुटि।

मेरे फायरबेस ऐप में क्लाउड फ़ंक्शन का नाम फिक्स करने से समस्या ठीक हो गई।

मैंने इसके बारे में एक बग रिपोर्ट यहां भर दी है https://firebase.google.com/support/troubleshooter/report/bugs

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.