Firebase Functions部署失败求助:依赖路径与区域匹配错误
Firebase Functions部署问题解决方案
问题1:Package subpath './v2/firestore' 不存在报错
报错信息
Error: Failed to load function definition from source: Failed to generate manifest from function source: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './v2/firestore' is not defined by "exports" in /{my-repo}/functions/node_modules/firebase-functions/package.json
解决方法
- 检查
package.json中firebase-functions版本,确保版本≥4.0.0(v2功能需要该版本及以上支持)。如果版本过低,执行升级命令:npm install firebase-functions@latest --save - 删除本地依赖缓存后重新安装:
rm -rf node_modules package-lock.json npm install - 确认代码中v2模块的导入路径正确,例如:
const { firestore, setGlobalOptions } = require("firebase-functions/v2");
问题2:Firestore区域不匹配报错
报错信息
i deploying functions... ⚠ functions: HTTP Error: 400, Validation failed for trigger projects/{my-app}/locations/us-central1/triggers/newuser-168978: The request was invalid: generic::invalid_argument: Database '(default)' does not exist in region 'us-central1'. Did you mean region 'nam5'?
解决方法
- 全局+单个函数双指定区域:除了全局设置,需在Firestore触发器的函数配置中单独指定区域,确保与Firestore数据库区域一致:
const { firestore, setGlobalOptions } = require("firebase-functions/v2"); // 全局设置 setGlobalOptions({ region: 'nam5' }); // 单个函数触发器指定区域 exports.newuser = firestore.document('users/{userId}').onCreate((snap, context) => { // 函数业务逻辑 }, { region: 'nam5' }); - 在firebase.json中配置默认区域:在项目根目录的
firebase.json里添加functions区域配置,覆盖默认的us-central1:{ "functions": { "region": "nam5" } } - 强制重新部署并清理旧触发器:执行强制部署命令,清除之前残留的us-central1区域触发器:
firebase deploy --only functions --force - 确认Firebase控制台中Firestore数据库的区域确实为
nam5,避免区域代码输入错误。
内容的提问来源于stack exchange,提问作者dev.farmer
相关产品推荐
相关产品推荐

