首页 > 解决方案 > firebase 可调用函数在部署期间附加 -default

问题描述

我不知道为什么,但是当我尝试部署以下可调用函数时,在 cli 和 firebase 仪表板中,它的名称总是附加-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);

索引.ts

import admin from 'firebase-admin';

admin.initializeApp();

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

我希望这个可调用函数仅helloWorld在部署时被调用,但实际上它是helloWorld-default

标签: node.jsfirebasegoogle-cloud-functions

解决方案


这是由 Firebase Functions 的一项功能(称为功能组)引起的,该功能require对模块的工作方式不同。

按照src/helloWorld.ts您的方式,该语句require('./src/helloWorld')返回一个如下所示的对象:

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

在您的index.ts文件中,您将此对象导出为helloWorld(纠正错字)。当您部署函数目录时,它会看到这个导出的对象,并决定导出它的每个属性,其前缀为导出名称 ( exportedName-propertyNameOfExportedObject),它给出helloWorld-default.

要获得您期望的行为,请显式导出默认属性:

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

推荐阅读