firebase / firebase/functions-samples

[BUG] in sample: firebase function (2nd generation)

Open
#1,037 2 comments 4 reactions 0 assignees View on GitHub
type: bug
Dominant language
JavaScript
Stars
12.2k
Forks
3.8k
Avg merge
3d 23h
Merged PRs (30d)
1

Description

### Which sample has a bug?

**Sample name or URL where you found the bug**

https://github.com/firebase/functions-samples/blob/539345b1d7b3af7a7fd4fadaa54255329bdff3e3/2nd-gen/callable-functions/functions/index.js#L17

const {onCall, HttpsError} = require("firebase-functions/v2/https");

### How to reproduce the issue
Not sure how this can be reproduced: previous versions of same code had been deployed and currently in production. This started randomly.

Tl:Dr:
* I have a few firebase functions (2nd generation) currently being tested in production
* I deployed several iterations of one of the functions already
* Then I refactored some code, tried re-deploying again, and suddenly, `onCall` imported from `firebase-functions/v2/http` stopped working

**Failing Function code used (if you modified the sample)**
Current code in production (and working) has `onCall` imported as a named import this way:
`import {HttpsError, onCall} from "firebase-functions/v2/https"`

After the deployment failure started, I fell back to using `require` as shown in the example I posted above. i.e.
`const {onCall, HttpsError} = require("firebase-functions/v2/https");`

Basic structure of what I have in production:

```
import * as admin from "firebase-admin";
import {HttpsError, onCall} from "firebase-functions/v2/https"
import {CallableRequest} from "firebase-functions/lib/common/providers/https";
import {APIRequestPayload} from "./typeDef"; //some custom type definition

exports.myfunctionname = onCall({
enforceAppCheck: true,
secrets: ["A_SECRET_I_USE"],
region: "us-east1",
cpu: 2,
concurrency: 500,
maxInstances: 15,
}, async (incomingData: CallableRequest) => {

const data: APIRequestPayload = incomingData.data;
const secretVariable = process.env.A_SECRET_I_USE;

//
** some code logic
//

if(someError) {
throw new HttpsError("internal", "Something went wrong");
}

return {codeLogicResult: somecodeprocessingresult}
})
```

**Steps to set up and reproduce**

* Write a basic function
* Run `npm run deploy` from the `function` folder

### Debug output

**Errors in the
[console logs](https://console.firebase.google.com/project/_/functions/logs?search=&severity=DEBUG)**

[Error: Failed to load function definition from source: Failed to generate manifest from function source: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/v2/providers/https' is not defined by "exports" in /Users/myuser/path_to_function_folder/functions/node_modules/firebase-functions/package.json](https://console.firebase.google.com/project/_/functions/logs?search=&severity=DEBUG)

**Screenshots**

Screenshot 2023-02-03 at 7 01 38 PM

### Expected behavior

Function should be deployed when `npm run deploy` is run from the cli as per documentation

### Actual behavior

Function fails to deploy with the error message above

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.