我正在尝试更新到最新版本的
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
我在 StackOverflow 中看到过类似的错误,例如 this one 或 this one,但这个错误略有不同。问题不在于
firebase
或 firebase-admin
依赖关系,而在于 firebase-functions
。
使用
firebase-functions
3.14.1 可以工作(尽管我收到一些警告),但我想更新到最新版本,这样我就有希望摆脱警告并获得最新更新。
我该如何解决这个问题?
谢谢!
正如错误所描述的,问题是我有导入引用 firebase-functions 的 lib 文件夹,如下所示:
import { HttpsError } from 'firebase-functions/lib/providers/https'
...
throw new HttpsError('failed-precondition', 'An error')
删除所有这些并替换为类似以下内容后,问题就消失了:
import { https } from 'firebase-functions'
...
throw new https.HttpsError('failed-precondition', 'An error')
第一种方法一直有效到 3.14.1。除此之外,看起来我们无法引用 from 中的 lib 文件夹。不理想,因为我想在使用这些类型时避免命名空间,但至少它有效。
在文档中,我们可以找到一个警告来不断更新firebase-functions sdk。警告是:
在许多情况下,新功能和错误修复只能通过 最新版本的 Firebase CLI 和 firebase-functions SDK。 经常更新 Firebase CLI 和 SDK 的函数文件夹中包含这些命令 Firebase 项目:
npm install firebase-functions@latest firebase-admin@latest --save npm install -g firebase-tools
这些可能是导致此错误消息的主要原因。因为您没有提供任何代码。
此外,它可能与 firebase-admin 11.0 版本冲突。此 GitHub 问题 声称 firebase-admin 11.0 不支持 firebase-functions 版本 3.21.2。但 firebase-admin 10.0 和 firebase-functions 版本 3.21.2 成功了。
我建议使用 firebase-admin 10.0 和 firebase-functions 版本 3.21.2。
该问题与您在应用程序中的导入方式有关。我在末尾添加了额外的斜杠,这给了我同样的错误。
来自
const admin = require('firebase-admin/');
至
const admin = require('firebase-admin');