skip to Main Content

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?

2

Answers


  1. 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",
        },
    };
    
    Login or Signup to reply.
  2. I was having the same issue with the following firebase functions SDK (node: 16.x.x)

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

    I changed how I imported the defineSecret and it’s now working. I didn’t have to change the .eslintrc either

    import { defineSecret } from "firebase-functions/v2/params"
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search