Выполнение облачных функций завершено без ошибок, но, похоже, не работает - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Face API для определения количества лиц на изображениях, и выполнение облачных функций выполняется каждый раз, но в базе данных ничего не меняется. Все в порядке с другими облачными функциями для создания и обновления профиля, но это не работает должным образом. В эту функцию я добавил множество операторов console.log, чтобы каждый мог указать, где находится ошибка, здесь и далее вызывается const img = await canvas.loadImage(imgUrl);, операторы console.log больше не печатаются в журналах облачных функций, но нет и ошибки, из-за которой это происходит. действительно трудно отлаживать. Кто-то, пожалуйста, укажите на ошибку.

Документация Face API: https://github.com/justadudewhohacks/face-api.js#face -api. js -for- nodejs

PS: URL-адрес изображения поправьте здесь, я только что изменил это.

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const stringHash = require('string-hash');

admin.initializeApp(functions.config().firebase);


exports.verifyProfile = functions.runWith({
  memory: '1GB'
}).https.onCall(async (data) => {

  console.log('====================== Cloud function called ==================')
  console.log(data);
  require('@tensorflow/tfjs-node');

  const faceApi = require('face-api.js');
  console.log('Loaded successfully face api');

  const canvas = require('canvas');
  const { Canvas, Image, ImageData } = canvas;
  console.log('Loaded successfully canvas');

  faceApi.env.monkeyPatch({ Canvas, Image, ImageData });
  console.log('Loaded successfully modules');

  let imgUrl = 'IMAGE_URL';
  console.log('Loading new models');

  await faceApi.nets.faceRecognitionNet.loadFromDisk('./models');
  await faceApi.nets.faceLandmark68Net.loadFromDisk('./models');
  await faceApi.nets.ssdMobilenetv1.loadFromDisk('./models');
  console.log('loaded new models');

  const img = await canvas.loadImage(imgUrl);
  console.log('Image converted to buffer');

  const detections = await faceApi
    .detectAllFaces(img)
    .withFaceLandmarks()
    .withFaceDescriptor();

  console.log('All detections called successfully');
  console.log(detections.length);

  const hashedValue = stringHash(data['uid']);
  const documentReference = admin.firestore().collection('profiles').doc(hashedValue);

  return documentReference.set({
    'verified': detections.length
  }, { merge: true })
});

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...