简体   繁体   中英

Google Cloud Function Not Returning Error Message

I have the following code in a google cloud function. When the user account is created it returns status 200 and the name of the registered user which I can access from the return of the successful promise. All works as expected. However, when there is an error creating the new user the status changes to 400 but no matter what on the client side I get an error of "Error: invalid-argument". I want to pass the error message from the google cloud function. When I check the cloud function logs, I can see the error code and error message.

What I tried: I did try to use the throw new functions.https.HttpsError() but I get a CORS error message.

Any advice on getting the cloud function to pass the error message properly?

const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
const { getAuth } = require('firebase-admin/auth')
const functions = require('firebase-functions')
const app = initializeApp();
const db = getFirestore();

exports.registerUser = (req, res) => {
  let registerDetails = req.body.data;
  res.set('Access-Control-Allow-Origin', '*');
  if (req.method === 'OPTIONS') {
    // Send response to OPTIONS requests
    res.set('Access-Control-Allow-Methods', 'GET');
    res.set('Access-Control-Allow-Headers', 'Content-Type');
    res.set('Access-Control-Max-Age', '3600');
    res.status(204).send('');
  } else {
     console.log(registerDetails)
     if(registerDetails.FirstName === undefined || registerDetails.FirstName === ""){
       res.status(400).json({data: 'Invalid Request'})
     } else {
       console.log(registerDetails);
         getAuth()
          .createUser({
          email: registerDetails.Email,
          emailVerified: false,
          password: registerDetails.Password,
          displayName: registerDetails.DisplayName,
          disabled: false,
        })
        .then((userRecord) => {
          // See the UserRecord reference doc for the contents of userRecord.
          let message = 'Registered user '+registerDetails.DisplayName+".";
          res.status(200).json({data: message});
          console.log('Successfully created new user:', userRecord.uid);
        },(error)=>{
          res.status(400).json({code:error.errorInfo.code,message:error.errorInfo.message})
          console.log('Error creating new user:', error);
        })
     } 
  }
};

To anyone who views this post, the solution is that I was confusing HTTP and HTTPS Callable functions, which have different syntax.

See this post: Google Cloud Function Cors Error Only When Error is Thrown

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM