firebase serve: из локально обслуживаемого приложения вызывайте локально обслуживаемые функции - PullRequest
0 голосов
/ 02 июля 2018

Как я могу правильно имитировать облачную функцию локально, чтобы в ней были все данные, как при ее запуске на серверах Firebase? (например, context.auth)

Я обслуживаю свой проект с firebase serve, он работает нормально на http://localhost:5000/, однако мои облачные функции вызываются из https://us-central1-<my-app>.cloudfunctions.net/getUser. (Функция даже не развернута.)

Чтобы избежать проблемы XY, я пытаюсь отладить свою функцию, но вызов ее из firebase shell приводит к тому, что context.auth не определено, то же самое при вызове через почтальон из http://localhost:5000/<my-app>/us-central1/getUser.

Это мой ./functions/src/index.ts файл

import * as functions from 'firebase-functions'
import admin from 'firebase-admin'
import { inspect } from 'util'

admin.initializeApp()

export const getUser = functions.https.onCall((data, context) => {
  console.debug('== getUser called =========================================')
  console.log('getUser', inspect(data), inspect(context.auth))
  return admin.database().ref('userRights/admin').child(context.auth.uid).once('value', snapshot => {
    console.log(snapshot.val())
    if (snapshot.val() === true) {
      return 'OK'
      // return {status: 'OK'}
    } else {
      return 'NOK'
      // return {status: 'error', code: 401, message: 'Unauthorized'}
    }
  })
})

файл ./firebase.functions.ts

import { functions } from '~/firebase'
export const getUser = functions.httpsCallable('getUser')

Потребитель ./src/pages/AdminPanel/index.tsx

import { getUser } from '~/firebase.functions'
//...
getUser({myDataX: 'asd'}).then(response => console.debug('response', response))

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

Только что нашел обходной путь. использование автоответчика fiddlers для перенаправления вызова функции в локальную обслуживаемую функцию.

шаг 1

скопировать целевой URL функции из клиента

step 1

шаг 2

скопировать локальную функцию URL-адреса

enter image description here

шаг 3

активировать автоответчик и использовать следующие правила (Второе правило также важно, чтобы разрешить все внешние запросы

enter image description here

0 голосов
/ 02 июля 2018

В настоящее время нет поддержки локального тестирования вызываемых функций, подобных этой. Команда работает над тем, чтобы вы указали конечную точку URL вызываемой функции, чтобы вы могли перенаправить ее в другое место для тестирования.

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