#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;