3

I am encountering an error when attempting to deploy a Firebase function. Despite deleting node_modules and package-lock.json, running npm install, and executing firebase deploy --only functions many times, the build process still fails with the following error:

Build failed: ...regex-range@5.0.1 from lock file
npm ERR! Missing: brace-expansion@1.1.11 from lock file
npm ERR! Missing: balanced-match@1.0.2 from lock file
npm ERR! Missing: concat-map@0.0.1 from lock file
npm ERR! Missing: mimic-fn@2.1.0 from lock file
npm ERR! Missing: p-limit@2.3.0 from lock file
npm ERR! Missing: error-ex@1.3.2 from lock file
npm ERR! Missing: json-parse-even-better-errors@2.3.1 from lock file
npm ERR! Missing: lines-and-columns@1.2.4 from lock file
npm ERR! Missing: is-arrayish@0.2.1 from lock file
npm ERR! Missing: ansi-styles@5.2.0 from lock file
npm ERR! Missing: react-is@18.2.0 from lock file
npm ERR! Missing: kleur@3.0.3 from lock file
npm ERR! Missing: sisteransi@1.0.5 from lock file
npm ERR! Missing: is-core-module@2.11.0 from lock file
npm ERR! Missing: path-parse@1.0.7 from lock file
npm ERR! Missing: supports-preserve-symlinks-flag@1.0.0 from lock file
npm ERR! Missing: shebang-regex@3.0.0 from lock file
npm ERR! Missing: buffer-from@1.1.2 from lock file
npm ERR! Missing: escape-string-regexp@2.0.0 from lock file
npm ERR! Missing: char-regex@1.0.2 from lock file
npm ERR! Missing: has-flag@4.0.0 from lock file
npm ERR! Missing: is-number@7.0.0 from lock file
npm ERR! Missing: picocolors@1.0.0 from lock file
npm ERR! Missing: convert-source-map@1.9.0 from lock file
npm ERR! Missing: makeerror@1.0.12 from lock file
npm ERR! Missing: tmpl@1.0.5 from lock file
npm ERR! Missing: isexe@2.0.0 from lock file
npm ERR! Missing: ms@2.1.2 from lock file
npm ERR! Missing: yallist@3.1.1 from lock file
npm ERR! Missing: ansi-styles@3.2.1 from lock file
npm ERR! Missing: escape-string-regexp@1.0.5 from lock file
npm ERR! Missing: supports-color@5.5.0 from lock file
npm ERR! Missing: color-convert@1.9.3 from lock file
npm ERR! Missing: color-name@1.1.3 from lock file
npm ERR! Missing: has-flag@3.0.0 from lock file
npm ERR! Missing: ms@2.1.2 from lock file
npm ERR! Missing: ms@2.1.2 from lock file
npm ERR! Missing: cliui@8.0.1 from lock file
npm ERR! Missing: yargs-parser@21.1.1 from lock file
npm ERR! Missing: p-try@2.2.0 from lock file
npm ERR!
npm ERR! Clean install a project
npm ERR!
npm ERR! Usage:
npm ERR! npm ci
npm ERR!
npm ERR! Options:
npm ERR! [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle]      
npm ERR! [-E|--save-exact] [-g|--global] [--global-style] [--legacy-bundling]
npm ERR! [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
npm ERR! [--strict-peer-deps] [--no-package-lock] [--foreground-scripts]
npm ERR! [--ignore-scripts] [--no-audit] [--no-bin-links] [--no-fund] [--dry-run]
npm ERR! [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
npm ERR! [-ws|--workspaces] [--include-workspace-root] [--install-links]
npm ERR!
npm ERR! aliases: clean-install, ic, install-clean, isntall-clean
npm ERR!
npm ERR! Run "npm help ci" for more info

npm ERR! A complete log of this run can be found in:
npm ERR!     /www-data-home/.npm/_logs/2023-04-09T09_55_08_623Z-debug-0.log; Error ID: beaf8772      

Functions deploy had errors with the following functions:
        update(asia-east2)
i  functions: cleaning up build files...

Error: There was an error deploying functions

package.json

{
  "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"
  },
  "main": "index.js",
  "dependencies": {
    "firebase-admin": "^10.0.0",
    "firebase-functions": "^4.0.0",
    "stripe": "^8.0.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^3.0.0"
  },
  "private": true,
  "engines": {
    "node": "16"
  }
}

firebase.json

{
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ]
    }
  ]
}

I don't have .gcloudignore but .gitignore:

node_modules/

I have manually npm installed each of them but anytime I execute firebase deploy --only functions, it keeps asking for more. Now my package-lock.json has hundreds of packages.

The code I'm testing:

exports.helloWorld = functions
  .region("asia-east2")
  .https.onRequest((request, response) => {
    functions.logger.info("Hello logs!", { structuredData: true });
    response.send("Hello from Firebase!");
  });

The steps I took:

  1. npm install -g firebase-tools

  2. firebase login

  3. firebase init functions - Use an existing project ...

  4. cd functions

  5. npm i stripe

  6. edit index.js

  7. firebase deploy --only functions

On the Firebase Dashboard, this function is indicated by a red triangle with the message 'Function deployment failed. Please try again.'

I have also tried updating the affected packages in my package.json file, but the error persists.

I am unsure what could be causing this issue, and I would greatly appreciate any guidance or suggestions on how to fix it. Thank you for your help.

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
Tui
  • 105
  • 1
  • 14
  • 1
    Please share your `package.json` and `firebase.json` without those we cannot tell what configuration you are running. – Rohit Kharche Apr 09 '23 at 11:23
  • 1
    Also what is in `.gcloudignore`? Has this function *ever* deployed successfully? Do *other* functions deploy successfully? What are the contents of `/www-data-home/.npm/_logs/2023-04-09T09_55_08_623Z-debug-0.log`? Does it deploy from a local device but not from this device? – anothermh Apr 09 '23 at 19:26
  • @RohitKharche I've added both. @anothermh I don't see the `gcloudignore`, only the `.gitignore` and it has only `node_modules/` in it. This is my first-ever deployment. How to find the contents of `/www-data-home/.npm/_logs/2023-04-09T09_55_08_623Z-debug-0.log`? I tried `firebase functions:log` but I don't think I got the right log. I'm deploying it from a local device. – Tui Apr 09 '23 at 20:12

4 Answers4

2

I have checked firebase-debug.log in this issue and it contains Could not find functions.yaml. Must use http discovery :

...
[debug] [2023-04-12T00:48:22.311Z] Building nodejs source
[debug] [2023-04-12T00:48:22.312Z] Could not find functions.yaml. Must use http discovery
[debug] [2023-04-12T00:48:22.319Z] Found firebase-functions binary at 'C:\Users\munic\Desktop\programming\penvie\testfunc\functions\node_modules\.bin\firebase-functions'
[debug] [2023-04-12T00:48:22.460Z] Serving at port 8008

[debug] [2023-04-12T00:48:22.666Z] Got response from /__/functions.yaml {"endpoints":{"helloWorld":{"platform":"gcfv1","availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"serviceAccountEmail":null,"vpc":null,"httpsTrigger":{},"entryPoint":"helloWorld"}},"specVersion":"v1alpha1","requiredAPIs":[]}
[debug] [2023-04-12T00:48:22.672Z] shutdown requested via /__/quitquitquit

[info] i  functions: preparing functions directory for uploading... 
[info] i  functions: packaged C:\Users\munic\Desktop\programming\penvie\testfunc\functions (63.59 KB) for uploading 
...

After reading a similar issue, I see that they recommend downgrading firebase-tools to 10.0.0, 10.8.0, 11.17.0, 11.18.0, 11.20.0, or 11.22.0. Mostly they prefer to downgrade it to 11.17.0.

npm i -g firebase-tools@11.17.0
Jordy
  • 1,802
  • 2
  • 6
  • 25
1

After reproducing your issue, I took the following steps to debug it.

There are a few things that you should check before starting the debugging process:

  1. Check your Firebase project is upgraded to the Blaze Plan first. After that, connect that upgraded project with your code.
  2. Make sure your node environment is version 16. I am using 16.13.1, which works. You must use version 16 because, in your package.json file, you have mentioned the node version as 16. You can use nvm [Node Version Manager] for this. I strongly recommend that you use the same version as mine.
  3. Run the npm install in your project again with your updated node version. It will successfully install all the dependencies.
  4. Delete the older Firebase cloud function and try re-deploying.
  • Thank you for your input. I did all the steps you said. I even created a fresh project with Blaze Plan and Node 18. I posted the problem on Firebase's GitHub and I think they are working on it: `https://github.com/firebase/firebase-tools/issues/5673` – Tui Apr 18 '23 at 02:08
  • 1
    Did you try using node version 16.13.1? Just curious if that worked or not. – Rohan Verma Apr 19 '23 at 07:50
  • I'm using 16.17.0 actually. – Tui Apr 21 '23 at 03:51
0

Had the same error, triggered on the build server by npm ci saying :

npm ci can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with npm install before continuing

It was due to having a global legacy-peer-deps enabled on npm. Once I removed it and ran npm install, the error was gone and functions deploied.

Sebastien F.
  • 1,613
  • 2
  • 23
  • 40
0

Thanks to Jordy's answer, I could deploy after downgrading firebase-tools:

npm i -g firebase-tools@11.17.0

However, I'd like to complete the answer by saying that you must have node 16 for this to work.

The firebase-tools downgrade by itself didn't work on my node 18.