You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Functions monorepo部署失败、依赖未本地安装问题

根本原因

问题核心是Yarn Workspace依赖提升机制和Firebase Functions部署逻辑的适配问题,具体分两点:

  1. 第一次配置nohoist失败是规则写法错误。Yarn 1.x的nohoist规则按依赖路径匹配,最初写的**/@company/server仅能匹配名为@company/server的依赖包,无法阻止该workspace包自身的第三方依赖被提升到根目录。而Firebase CLI部署函数时,仅会打包source字段指向的functions目录内的代码和依赖,不会读取根目录的node_modules,依赖缺失时会抛出「默认Firebase app不存在」的误导性报错——本质是核心依赖加载失败,并非业务代码漏写initializeApp()。
  2. 第二次在functions包内配置全量nohoist后仍部署失败,是旧版本Firebase CLI的工作目录bug导致的。在根目录执行部署命令时,旧版CLI解析函数触发器的工作目录不会自动切换到source指定的functions路径,会优先从命令执行的根目录查找依赖,即使functions本地已经安装了全量依赖也无法被正确加载,只有手动进入functions目录执行部署才能正常运行。
解决步骤

按以下顺序操作即可实现根目录正常部署:

  • 修正根目录package.json的workspaces nohoist配置,正确规则需要同时覆盖workspace包本身和它的所有依赖,配置示例如下:
{
  "private": true,
  "name": "@company/project",
  "version": "1.0.0",
  "description": "Project monorepo",
  "license": "MIT",
  "author": {
    "name": "Raul"
  },
  "scripts": {
    "app": "yarn workspace @company/app start",
    "server": "yarn workspace @company/server start"
  },
  "workspaces": {
    "packages": ["packages/*"],
    "nohoist": [
      "**/@company/server",
      "**/@company/server/**"
    ]
  }
}

注意:必须添加**/@company/server/**规则,才能匹配functions包下的所有第三方依赖,阻止依赖被提升到根目录。

  • 执行全量清理重装依赖,命令如下:
# 删除所有位置的node_modules目录
rm -rf node_modules packages/*/node_modules
# 清理yarn缓存
yarn cache clean
# 重新安装依赖
yarn install

安装完成后检查packages/functions/node_modules目录,确认firebase-admin、firebase-functions等核心依赖都存在于该目录下,未被提升到根目录。

  • 将全局Firebase CLI升级到最新版本,修复monorepo场景下的工作目录解析bug,升级命令:
# npm安装方式执行
npm install -g firebase-tools@latest

# yarn安装方式执行
yarn global add firebase-tools@latest
  • 兜底方案:如果升级CLI后仍存在根目录部署异常,可以在根目录package.json中添加部署脚本,显式指定工作目录执行部署,无需手动切换目录:
{
  "scripts": {
    "deploy:functions": "firebase deploy --only functions --cwd packages/functions"
  }
}

后续直接在根目录执行yarn deploy:functions即可正常完成函数部署。


内容的提问来源于stack exchange,提问作者Raul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:57:23