【问题标题】:Using cloud function parameterized configuration with Typescript使用带有 Typescript 的云函数参数化配置
【发布时间】:2023-01-04 16:30:30
【问题描述】:

我正在尝试按照this documentation 在我的 Firebase 云函数中使用参数化配置。

他们给出的示例是用 Javascript 编写的,特别是他们如何从 firebase-functions/params 导入 defineInt 和 defineString。

const { defineInt, defineString } = require('firebase-functions/params');

但是我所有的函数代码都在 Typescript 中,所以我试图将其翻译成:

import {defineInt} from "firebase-functions/lib/params";

因为显然 firebase-functions/params 无法解析。

但是当我尝试部署我的函数时,我收到以下错误消息:

错误:无法从源加载函数定义:无法 从函数源生成清单:错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]: 包子路径 './lib/params' 不是 由“出口”定义 /Users/sarbogast/dev/blindly/blindly/functions/node_modules/firebase-functions/package.json

知道在 Typescript 中导入这些函数的正确方法是什么吗?

【问题讨论】:

  • 我遇到了同样的问题。从语法的角度来看,您正在正确导入,但似乎没有这样的模块。 Package subpath './params' is not defined by "exports" in /Users/.../functions/node_modules/firebase-functions/package.json

标签: typescript firebase google-cloud-functions


【解决方案1】:

以下导入应该可以解决该问题:

import { https } from "firebase-functions/v1";
import { defineString } from "firebase-functions/params"; // no /lib

const welcomeMessage = defineString("WELCOME_MESSAGE");

export const hello = https.onRequest((request, response) => {
  response.send("Message: " + welcomeMessage);
});

依赖项:

"firebase-admin": "^11.2.0",
"firebase-functions": "^4.0.1"

鉴于错误是 eslint 并且在该上下文中没有意义,将以下内容添加到 .eslintrc.js 会将阻止错误变成更宽容的警告:

module.exports = {
    ...
    rules: {
        ...
        "import/no-unresolved": "warn",
    },
};

【讨论】:

  • 你应该有welcomeMessage.value(),在.onRequest里面,对吧?
  • 我在定位“最新”版本时遇到了同样的问题。回滚到此版本修复了导入问题。
【解决方案2】:

我在使用以下 firebase 函数 SDK(节点:16.x.x)时遇到了同样的问题

"firebase-admin": "^10.0.2",
"firebase-functions": "^3.18.0"

我更改了导入 defineSecret 的方式,它现在可以正常工作了。我也不必更改.eslintrc

import { defineSecret } from "firebase-functions/v2/params"

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2012-09-27
    • 2023-01-20
    • 2014-01-12
    • 1970-01-01
    • 2019-03-21
    • 2022-11-15
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多