Firebase Functions无法编译TypeScript与ES模块的问题求助
Firebase Functions无法编译TypeScript与ES模块的问题求助
大家好,我最近给项目集成了Firebase Functions,除了把package.json里的"main": "src/index.ts"(默认路径指向的文件不对,所以改了这个配置),其他都是用的默认设置。
下面是我原本能正常运行的代码:
// index.ts const { initializeApp } = require('firebase-admin/app'); const { onValueCreated } = require('firebase-functions/v2/database'); const { logger } = require('firebase-functions'); initializeApp(); exports.testFn = onValueCreated( '/users/{uid}/company/accounts/{accId}', (event) => { logger.log(event); } );
这段代码在Firebase模拟器里能正常输出日志,完全没问题。
但是当我做了以下修改之后,就出问题了:
// index.ts // 把require改成了ESM的import import { initializeApp } from 'firebase-admin/app'; import { onValueCreated } from 'firebase-functions/v2/database'; import { logger } from 'firebase-functions'; initializeApp(); exports.testFn = onValueCreated( '/users/{uid}/company/accounts/{accId}', (event: any) => { // 这里加了`: any`类型注解,避免TypeScript报错 logger.log(event); } );
修改后我只得到以下错误信息:
shutdown requested via /__/quitquitquit !! functions: Failed to load function definition from source: FirebaseError: Functions codebase could not be analyzed successfully. It may have a syntax or runtime error
我排查后发现,不管是改成ES模块导入,还是给参数加TypeScript类型注解,都会触发这个错误。我已经确认package.json里安装了typescript,而且尝试在ESM导入的末尾加上.js或.ts扩展名也没用,还是一样的报错。
有没有朋友遇到过类似的问题?求指点怎么解决!
备注:内容来源于stack exchange,提问作者ervin
相关产品推荐
相关产品推荐

