Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using cloud function parameterized configuration with Typescript

I'm trying to follow this documentation to use parameterized configuration in my Firebase cloud functions.

The example they give is in Javascript, in particular in how they import defineInt and defineString from firebase-functions/params.

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

But all my functions code is in Typescript so I tried to translate that into:

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

Since apparently firebase-functions/params cannot be resolved.

But then when I try to deploy my functions, I get the following error message:

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

Any idea what's the proper way to import those functions in Typescript?

like image 837
Sebastien Avatar asked Oct 22 '25 08:10

Sebastien


1 Answers

The following import should resolve the issue:

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);
});

Dependencies:

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

And given that the error is an eslint one and it doesn't make sense in that context, adding the following to .eslintrc.js turns the blocking error into a more persmissive warning:

module.exports = {
    ...
    rules: {
        ...
        "import/no-unresolved": "warn",
    },
};
like image 102
Dharmaraj Avatar answered Oct 23 '25 21:10

Dharmaraj