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

升级firebase依赖部署函数报ERR_PACKAGE_PATH_NOT_EXPORTED错误

问题复现环境
  • firebase-admin: 11.0.0
  • firebase-functions: 3.21.2
  • firebase-tools: 11.1.0

部署函数时抛出错误:

Error: Failed to load function definition from source: Failed to generate manifest from function source: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib' is not defined by "exports" in /Users/myuser/Documents/myproject/node_modules/firebase-functions/package.json

回退firebase-functions到3.14.1版本可正常运行,但存在版本警告,需要升级到最新版本消除警告、使用新功能。

修复步骤

报错本质是两个原因:一是当前使用的firebase-tools 11.1.0版本对3.2x版本的firebase-functions适配有缺陷;二是高版本firebase-functions通过package.json的exports字段做了导入路径限制,不再允许直接引用包内./lib目录下的未公开内部文件,旧写法会直接触发路径导出错误。按以下顺序操作即可解决:

  • 升级本地和全局的firebase-tools到最新版本,修复工具侧的适配bug:
    # 全局升级
    npm install -g firebase-tools@latest
    # 项目本地开发依赖升级
    npm install firebase-tools@latest --save-dev
    
  • 全局搜索项目代码,把所有从firebase-functions/lib/xxx路径导入的写法,全部替换为官方公开的导出路径:
    • 旧的错误写法示例(高版本不再支持):
      const { onCall } = require('firebase-functions/lib/providers/https');
      const { HttpsError } = require('firebase-functions/lib/providers/https');
      
    • 替换为对应公开导入路径:
      // 使用v1接口时
      const { onCall, HttpsError } = require('firebase-functions');
      // 使用v2接口时
      const { onCall } = require('firebase-functions/v2/https');
      
    如果项目中引入了其他依赖firebase-functions内部路径的第三方包,需要同步把这类包升级到适配高版本firebase-functions的新版本,否则依然会触发报错。
  • 清理依赖缓存后重新安装,避免旧版本文件残留:
    rm -rf node_modules package-lock.json
    npm install
    
  • 先本地执行firebase emulators:start确认函数可以正常加载,无报错后再执行firebase deploy部署即可。

注意:不要为了绕过这个报错去修改node_modules里的package.json配置,后续重新安装依赖就会失效,属于临时无效方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:33:38