вызываемая функция firebase добавляется — по умолчанию во время развертывания

#node.js #firebase #google-cloud-functions

#node.js #firebase #google-cloud-функции

Вопрос:

Я не уверен, почему, но когда я пытаюсь развернуть следующую вызываемую функцию, в cli и firebase dashboard к ее имени всегда добавляется -default

src/HelloWorld.ts

 import {region} from "firebase-functions"

async function handler(input, context) {
  return "Hello World"
}

export default region('europe-west3').runWith({ memory: '2GB' }).https.onCall(handler);
 

index.ts

 import admin from 'firebase-admin';

admin.initializeApp();

export const hellloWorld = require('./src/helloWorld');
 

Я бы ожидал, что эта вызываемая функция будет вызываться только helloWorld при развертывании, но вместо этого она helloWorld-default

Ответ №1:

Это вызвано особенностью функций Firebase, называемых функциональными группами, и это require работает по-разному для модулей.

В src/helloWorld.ts том виде, в каком вы его используете, оператор require('./src/helloWorld') возвращает объект, который выглядит следующим образом:

 {
  default: (input, context) => { /* ... */ }
}
 

В вашем index.ts файле вы экспортируете этот объект как helloWorld (исправляя опечатку). Когда вы развертываете каталог функций, он видит этот экспортированный объект и решает экспортировать каждое из его свойств с префиксом export name ( exportedName-propertyNameOfExportedObject ), который дает helloWorld-default .

Чтобы получить ожидаемое поведение, явно экспортируйте свойство по умолчанию:

 export const helloWorld = require('./src/helloWorld').default;