Skip to content

There was an error deploying functions. Failed to update function app in region us-central1

This is my first time trying to deploy a function firebase function. I’ve written an API and I want to create a firebase function and use it.

In my project everything works on localhost and even worked when I did firebase serve --only functions, hosting.

Since I’m only using hosting and functions I didn’t do the initializeApp(firebaseConfig) thing of firebase config (not sure if this is required).

My functions/index.js is:

//functions/index.js
const functions = require("firebase-functions");

const express = require('express');
const bodyParser = require('body-parser');

var connection = require('../utils/dbconfig'); //outside functions folder

const app = express();
app.use(bodyParser.json());

// API START HERE
app.get('/getEmployees', (req, res) => {

    // Here I connect to db which has it's configurations in dbConfig.js
    res.send(result);

});
// API END HERE
exports.app = functions.https.onRequest(app);

I’ve pasted this code manually from the index.js that I have in the main project folder (outside functions) and inside the function folder I’ve another index.js, and package.json files which were auto-generated and I have added dependencies as I had in the package.js on outside of the functions folder. Then inside the functions folder, I did npm install.

Here is my functions/package.json file:

  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "16"
  },
  "main": "index.js",
  "dependencies": {
    "firebase-admin": "^9.8.0",
    "firebase-functions": "^3.14.1",
    "body-parser": "~1.0.1",
    "express": "~4.0.0",
    "tedious": "^14.3.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0",
    "nodemon": "^2.0.15"
  },
  "private": true
}

Then the only firebase.json file has these settings:

{
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ],
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
  }
}

When I do firebase deploy (that deploys the functions and hosting) or firebase deploy --only functions I get an error from which I’ve taken the last 10 lines:

[debug] [2022-03-08T02:48:07.963Z] <<< [apiv2][body] DELETE https://us.gcr.io/v2/ventes-4f9b6/gcf/us-central1/053feedd-aed4-4c8d-93c4-591b134374b6/cache/manifests/sha256:7b2b71f239340ebec209e230e76e303b6fd7293c8f23ee3292f23d8cf4571319 {"errors":[]}
[debug] [2022-03-08T02:48:08.022Z] Error: Failed to update function app in region us-central1
    at /usr/local/lib/node_modules/firebase-tools/lib/deploy/functions/release/fabricator.js:38:11
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Fabricator.updateV1Function (/usr/local/lib/node_modules/firebase-tools/lib/deploy/functions/release/fabricator.js:255:32)
    at async Fabricator.updateEndpoint (/usr/local/lib/node_modules/firebase-tools/lib/deploy/functions/release/fabricator.js:136:13)
    at async handle (/usr/local/lib/node_modules/firebase-tools/lib/deploy/functions/release/fabricator.js:75:17)
[error] 
[error] Error: There was an error deploying functions

I’ve tried different solutions with a similar title, but nothing works so far. I have also tried installing packages again in the functions folder, but nothing is wrong for me.

Answer

You can’t have files outside the functions folder. Only what’s in the functions folder gets deployed. Move it inside of your functions folder.

var connection = require('../utils/dbconfig'); //outside functions folder

Also, functions.https.onRequest handles parsing the body of incoming requests, so using any body parsers will likely lead to errors and you should remove it.