firebase 用Typescript实现云函数参数化配置

llew8vvj  于 2023-01-05  发布在  TypeScript
关注(0)|答案(2)|浏览(117)

我正在尝试按照这个文档在我的Firebase云函数中使用参数化配置。
他们给出的例子是在Javascript中,特别是他们如何从firebase-functions/params导入defineIntdefineString

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

但是我所有的函数代码都是用Typescript编写的,所以我试着把它翻译成:

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

因为firebase-functions/params显然无法解析。
但是当我尝试部署我的函数时,我得到了下面的错误消息:
错误:无法从源加载函数定义:无法从函数源生成清单:错误[错误包路径未导出]:软件包子路径'./lib/params'不是由/用户/sarbogast/设备/盲目/盲目/函数/节点_模块/firebase-函数/package.json中的"导出"定义的
你知道在Typescript中导入这些函数的正确方法是什么吗?

92dk7w1h

92dk7w1h1#

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

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",
    },
};
7gcisfzg

7gcisfzg2#

我在使用以下firebase函数SDK时遇到了同样的问题(节点:(第十六条第十款)

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

我改变了导入defineSecret的方式,现在它可以工作了。我也不需要改变.eslintrc

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

相关问题