Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the issue that 'Firebase Function' might can't deploy #309

Merged
merged 1 commit into from
Jul 2, 2024
Merged

Conversation

jayden-sudo
Copy link
Contributor

@jayden-sudo jayden-sudo commented Jul 2, 2024

name: Pull Request
about: Open a PR for p0tion

Description

Might encounter an error when running the following commands:

cd packages/backend
yarn firebase:deploy

Error message:

⚠  functions: Upload Error: HTTP Error: 400, <?xml version='1.0' encoding='UTF-8'?><Error><Code>EntityTooLarge</Code><Message>Your proposed upload is larger than the maximum object size specified in your Policy Document.</Message><Details>Content-length exceeds upper bound on range</Details></Error>

Error Details: The uploaded Firebase function source code package is too large (exceeds 100MB).

Cause: After running terraform in the backend/aws folder, temporary files larger than 500MB are generated in backend/aws. The backend/aws folder is not needed for deploying Firebase functions.

Solution:

Modify the firebase.json file to exclude the backend/aws folder:

Before:

    "functions": {
        "predeploy": "yarn --cwd \"$RESOURCE_DIR\" build",
        "source": "."
    }

After modification:

    "functions": {
        "predeploy": "yarn --cwd \"$RESOURCE_DIR\" build",
        "source": ".",
        "ignore": [
            "node_modules",
            "aws"
        ]
    }
  • Note:

    • Why add node_modules?

      In the firebase-tools source code:

      typescript const ignore = config.ignore || ["node_modules", ".git"];

      When the ignore node is not configured, node_modules is automatically ignored. However, when ignore is manually added, you must also manually add node_modules to the ignore list.

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

  • Test A
  • Test B

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules
  • I reviewed the code of conduct and contributors' guide

Might encounter an error when running the following commands:

```shell
cd packages/backend
yarn firebase:deploy
```

Error message:

```
⚠  functions: Upload Error: HTTP Error: 400, <?xml version='1.0' encoding='UTF-8'?><Error><Code>EntityTooLarge</Code><Message>Your proposed upload is larger than the maximum object size specified in your Policy Document.</Message><Details>Content-length exceeds upper bound on range</Details></Error>
```

Error Details: The uploaded Firebase function source code package is too large (exceeds 100MB).

Cause: After running `terraform` in the `backend/aws` folder, temporary files larger than 500MB are generated in `backend/aws`. The `backend/aws` folder is not needed for deploying Firebase functions.

**Solution**:

Modify the `firebase.json` file to exclude the `backend/aws` folder:

Before:

```json
    "functions": {
        "predeploy": "yarn --cwd \"$RESOURCE_DIR\" build",
        "source": "."
    }
```

After modification:

```json
    "functions": {
        "predeploy": "yarn --cwd \"$RESOURCE_DIR\" build",
        "source": ".",
        "ignore": [
            "node_modules",
            "aws"
        ]
    }
```

- Note:

  - Why add `node_modules`?

    In the [firebase-tools source code](https://github.com/firebase/firebase-tools/blob/v13.12.0/src/deploy/functions/prepareFunctionsUpload.ts#L75):

    ```typescript
    const ignore = config.ignore || ["node_modules", ".git"];
    ```

    When the `ignore` node is not configured, `node_modules` is automatically ignored. However, when `ignore` is manually added, you must also manually add `node_modules` to the `ignore` list.
@glamperd glamperd merged commit d61f85c into privacy-scaling-explorations:dev Jul 2, 2024
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants