Игнорирование исключения из готовой функции в тесте Google Cloud Console - PullRequest
3 голосов
/ 31 мая 2019

Я пытаюсь написать по электронной почте OnCreate моей базы данных firebase. Я получаю сообщение об ошибке «Игнорирование исключения из готовой функции» при проверке этого в облачных функциях Google.

const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
const gmailEmail = functions.config().gmail.email;
const gmailPassword = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
 service: 'gmail',
 auth: {
   user: gmailEmail,
   pass: gmailPassword,
  },
});

const APP_NAME = 'Your App';
exports.sendWelcomeEmail = functions.database.ref('/PickupRequests{pushID}').onCreate((snapshot, context) => {
  return sendWelcomeEmail();
});

async function sendWelcomeEmail() {
  const mailOptions = {
    from: "<noreply@firebase.com>",
    to: "info@abc.com",
    subject: "New Request"
  };
  await mailTransport.sendMail(mailOptions);
  return console.log("Success!");
}

Я ожидаю получить электронное письмо, но вместо этого я получаю сообщение об ошибке от тестера Google Cloud, в котором говорится «Игнорирование исключения из завершенной функции», несмотря на то, что консоль также возвращает «Успех!». Вот полная ошибка:

 "textPayload": "Ignoring exception from a finished function",
  "insertId": "000000-5e081b31-9b2f-4f9a-a6a6-6c7ca4d38814",
  "resource": {
    "type": "cloud_function",
    "labels": {
      "project_id": "your-app",
      "region": "us-central1",
      "function_name": "sendWelcomeEmail"
    }
  },
  "timestamp": "2019-05-31T00:56:56.926Z",
  "severity": "DEBUG",
  "labels": {
    "execution_id": "jbvvfsrrf8yz"
  },
  "logName": "projects/your-app/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
  "trace": "projects/your-app/traces/5af3a317b80ee34154c1caf1536fc16e",
  "receiveTimestamp": "2019-05-31T00:57:02.981796854Z"
}

1 Ответ

0 голосов
/ 13 июня 2019

Мне удалось это исправить с помощью следующего кода:

'use strict';

const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
const username = functions.config().gmail.email;
const password = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
 service: 'gmail',
 auth: {
   user: gmailEmail,
   pass: gmailPassword,
  },
});
exports.sendPickupRequest = functions.database.ref('/PickupRequests/{pushId}').onCreate(async(snapshot, context) => {

  const val = snapshot.val();
  const final = JSON.stringify(val)
  const mailOptions = {
    from: gmailEmail,
    to: "info@abc.com",
    subject: "New Request"
  };
  try {
    await mailTransport.sendMail(mailOptions);
    console.log('email sent');
  } catch(error) {
    console.error('There was an error while sending the email:', error);
  }
  return null;
});
...