部署Firebase Cloud Functions时自动加-default后缀无法识别原有函数
函数名自动添加-default后缀的原因
你当前的导出逻辑触发了Firebase部署工具的默认导出识别规则,具体原因如下:
- 你的TS函数文件使用
export default做默认导出,在Node的模块互兼容机制下,你在index.js中导入的newGame等变量实际是包含default属性的模块对象,而不是直接的云函数实例 - Firebase部署工具扫描导出的函数时,若检测到导出的对象存在
default属性且为可调用的云函数实例,会自动为函数名拼接-default后缀,以此区分同模块下的命名导出与默认导出函数,该逻辑为部署工具内置逻辑,和你手动设置的导出key无关
修复方案
你可以任选以下任意一种方式修复:
- 调整TS文件为命名导出:将
newGame.ts中的export default newGame修改为命名导出格式,同步修改index.js的导入逻辑即可
示例修改后的TS代码:
对应index.js导入逻辑:export const newGame = functions.https.onCall( async (data:any,context:any) => { // <function content> });const { newGame } = require('./newGame'); // 其余函数同理修改 exports.newGame = newGame; - 保持默认导出不变,导出时取default属性:不需要修改TS文件,仅调整index.js的导出逻辑,直接取导入对象的default属性即可
示例修改后的index.js代码:exports.newGame = newGame.default; exports.newRound = newRound.default; // 其余函数同理修改

内容的提问来源于stack exchange,提问作者aleksander frnczak
相关产品推荐
相关产品推荐

