Best way to edit package.json file for Firebase Cloud Functions? - firebase

I get a parsing error when attempting to deploy a cloud function that the firebase-tools module cannot be found. I looked in my package.json file and notice that it's missing, so I want to add it. I also noticed that the other dependencies have versions specified.
Are these version numbers updated automatically when I update my cloud functions through the CLI with npm install --save firebase-functions#latest?
And what is the proper way for me to add firebase-tools as a dependency? Do I specify a version number?
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"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": "^10.0.2",
"firebase-functions": "^3.20.1"
},
"devDependencies": {
"eslint": "^8.9.0",
"eslint-config-google": "^0.14.0",
"firebase-functions-test": "^0.2.0"
},
"private": true
}

The common way is to use NPM, the NodeJS package manager:
npm install -g firebase-tools
Where switch -g means global (available to all projects), not referenced inside package.json.
Also see: https://www.npmjs.com/package/firebase-tools ...which reads version 11.0.0.

Related

Unable to deploy firebase cloud functions to any firebase project from my machine (but it works perfectly fine on my colleague's machine)

This is my mac-mini M1 configuration and I'm trying to deploy firebase functions but it is not allowing me to deploy and every time shows me this error.
When I run this command it throws an error :
me#-Mac-mini demo % firebase deploy --only functions:helloWorld
=== Deploying to 'demo'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run build
> build
> tsc
✔ functions: Finished running predeploy script.
i functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i functions: ensuring required API cloudbuild.googleapis.com is enabled...
✔ functions: required API cloudfunctions.googleapis.com is enabled
✔ functions: required API cloudbuild.googleapis.com is enabled
i functions: preparing codebase default for deployment
i functions: preparing functions directory for uploading...
i functions: packaged /Users/me/Documents/work/workspace/demo/functions (56.87 KB) for uploading
✔ functions: functions folder uploaded successfully
i functions: creating Node.js 16 function helloWorld(us-central1)...
⚠ functions: failed to create function projects/demo/locations/us-central1/functions/helloWorld
Failed to create function projects/demo/locations/us-central1/functions/helloWorld
Functions deploy had errors with the following functions:
helloWorld(us-central1)
i functions: cleaning up build files...
⚠ functions: Unhandled error cleaning up build images. This could result in a small monthly bill if not corrected. You can attempt to delete these images by redeploying or you can delete them manually at https://console.cloud.google.com/artifacts/docker/demo/us-central1/gcf-artifacts
Error: There was an error deploying functions
The actual log of the error :
{"#type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":7,"message":"Cloud Functions uses Artifact Registry to store function docker images. Artifact Registry API is not enabled in your project. To enable the API, use the gcloud command 'gcloud services enable artifactregistry.googleapis.com' then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."}
Other versions info :
NPM version : 8.11.0
Firebase version : 11.2.0
Node version : 16.15.1
Firebase package.json
{
"name": "functions",
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "16"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^10.2.0",
"firebase-functions": "^3.21.0"
},
"devDependencies": {
"typescript": "^4.6.4"
},
"private": true
}
Deploying from MacBook-pro-2014
Deploying from Mac-mini-m1
Why I am unable to deploy cloud functions from my machine and why is my colleague able to deploy the same cloud functions to same Firebase project from his machine even without enabling Artifacts Registry?
The Artifact Registry API is not enabled in your project.
The solution requires that billing is enabled for your project.
Provided that the CLI has permission to enable services, run this command:
gcloud services enable artifactregistry.googleapis.com
Or use the Google Cloud Console UI
More information is available in the Artifact Registry Documentation:
Enabling and disabling the service
Artifact Registry pricing

Vercel deployment error | npm ERR! code E404

I'm trying to deploy my website on vercel it is a regular static portfolio website connected with a headless cms (graphql). I've previously deployed a website on vercel, had some errors but the errors were understandable and I managed to solve them all. However, when I try to deploy my web now it returns errors I cannot understand. I have googled and spent a few hours trying to fix the problems but it resulted in nothing. I'm really curious what the npm ERR! code E404 is.
Full error messages
Cloning github.com/Dylanyves/mac-yves (Branch: main, Commit: bf98fa3)
Cloning completed: 410.928ms
Installing build runtime...
Build runtime installed: 2.790s
Looking up build cache...
Build Cache not found
Installing dependencies...
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/find-up/-/find-upy-2%20px-4.1.0.tgz - Not found
npm ERR! 404
npm ERR! 404 'find-up#https://registry.npmjs.org/find-up/-/find-upy-2 px-4.1.0.tgz' is not in this registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /vercel/.npm/_logs/2022-05-17T13_28_43_498Z-debug-0.log
Error: Command "npm install" exited with 1
package.json
{
"name": "next-portfolio",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"aos": "^2.3.4",
"graphql": "^16.5.0",
"graphql-request": "^4.2.0",
"html-react-parser": "^1.4.12",
"next": "12.1.6",
"react": "18.1.0",
"react-dom": "18.1.0",
"uuid": "^8.3.2"
},
"devDependencies": {
"autoprefixer": "^10.4.7",
"eslint": "8.15.0",
"eslint-config-next": "12.1.6",
"postcss": "^8.4.13",
"tailwindcss": "^3.0.24"
}
}
You need to specify the Framework Preset in the Vercel's Build and Deployment settings.
Go through this documentation , this should help.

Find Functions using beta version Firebase

A few days ago I received an email from Google Firebase that some of my cloud functions are using beta versions and they are removing the beta version calls If I understood correctly. So Now I have to update it. I Want to check that which of my function is calling the beta version I am not making static requests to any API. I am using firebase functions to call APIs and one of the function inside is calling firebase API. So Is there any possible way to know the function which is calling beta version API? I am Using 0.8.1 so It is because of this version that the function is calling beta API or is there something else? Here is my Package.json
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"asyncawait": "^1.0.6",
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1"
},
"private": true
}
Thanks
All of your functions in this project are using very old beta APIs. You can tell because of this dependency:
"firebase-functions": "^0.8.1"
The latest firebase-functions module is 3.5.0 at the time of this writing. The APIs have changed significantly since 0.8.1, and your code (for non-http functions) will not work if you upgrade without changing your code. You should consult the documentation to learn about the modern APIs.

Firebase functions fails to deploy with same error in all functions

I'm trying to deploy my firebase functions but all the functions return me error, I had already deployed before without any error.
I did not install anything new since the last time that a deploy was correct.
Every functions return almost the same error, the only thing that changes is the "errorId"
I have tried to logout from firebase-cli and login again, i have updated firebase-tools, firebase-admin, firebase-functions from npm.
I'm deploying with firebase deploy --only functions
Deployment error.
Build failed:
{
"error": {
"canonicalCode": "INVALID_ARGUMENT",
"errorMessage": "`npm_install` had stderr output:\nnpm WARN tar ENOENT: no such file or directory, open '/workspace/node_modules/.staging/#types/lodash-973f4ada/common/collection.d.ts'\nnpm WARN tar ENOENT: no such file or directory, open '/workspace/node_modules/.staging/#types/node-29231f2f/inspector.d.ts'\nnpm WARN tar ENOENT: no such file or directory, open '/workspace/node_modules/.staging/#types/node-f1c8db24/inspector.d.ts'\nnpm WARN tar ENOENT: no such file or directory, open '/workspace/node_modules/.staging/#firebase/auth-1b85ce5b/dist/auth.esm.js.map'\nnpm WARN tar ENOENT: no such file or directory, open '/workspace/node_modules/.staging/#firebase/webchannel-wrapper-e6854ec7/dist/index.js'\nnpm ERR! code E404\nnpm ERR! 404 Not Found: grpc#1.20.1\n\nnpm ERR! A complete log of this run can be found in:\nnpm ERR! /builder/home/.npm/_logs/2019-06-08T18_16_17_266Z-debug.log\n\nerror: `npm_install` returned code: 1",
"errorType": "InternalError",
"errorId": "FD2536C1"
}
}
Package.json :
{
"name": "functions",
"engines": {
"node": "8"
},
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"#firebase/storage": "^0.2.16",
"#google-cloud/vision": "^0.24.0",
"#sendgrid/mail": "^6.4.0",
"cors": "^2.8.5",
"dateformat": "^3.0.3",
"firebase": "^5.11.1",
"firebase-admin": "^7.4.0",
"firebase-functions": "^2.3.1",
"json2csv": "^4.5.1",
"mailchimp-api-v3": "^1.13.0",
"moment-timezone": "^0.5.25",
"openpay": "^1.0.3",
"paypal-rest-sdk": "^1.8.1",
"request": "^2.88.0"
},
"devDependencies": {
"eslint": "^4.12.0",
"eslint-plugin-promise": "^3.6.0",
"firebase-functions-test": "^0.1.6"
},
"private": true
}
Correct deploy of the functions.
Update***
I have tried to delete everything and uninstall every package except for the ones required for firebase-functions and start over with one test function in node 8 i'm having the same issue, with node 6 it was deployed, but i need to use node 8 because i need to use await/async
I had a similar deployment failure. I think it was caused by me running firebase deploy from the app directory rather the the app\functions directory. In any case, I ran the following commands from the terminal (using VSCode in my case) having changed into the app\functions directory. Deployment then worked perfectly.
npm install --save #google-cloud/storage
npm install --save firebase-admin#latest
npm install --save firebase-functions#latest
firebase deploy
Hope that helps.
Checking the log
You can examine the actual logs by using this command to open the log
firebase functions:log
Doing this is really helpful since specific issue will usually be visible there. I sometimes even had error as simple as a missing package name in package.json
It would have been much helpful if firebase could show better info on the errors directly. but at least we can find them here.
I hope it helps
I had similar issue and it ended up being a missing module in my package.json
You can view more detailed / useful logs here: https://console.cloud.google.com/logs
Firebase functions:log really helps! In my case I had not enabled signin method in the firebase project (:

Cannot find module 'webpack-cli'

I want to make es6 into my project so I used this tutorial this tutorial
and when i try to write 'webpack' in cmd I get the error
Done in 8.99s.
{ Error: Cannot find module 'webpack-cli'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at runCommand.then.result (C:\Users\adirz\AppData\Roaming\npm\node_modules\webpack\bin\webpack.js:62:14)
at process._tickCallback (internal/process/next_tick.js:109:7) code: 'MODULE_NOT_FOUND' }
package.json
{
"name": "functions",
"scripts": {
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "~5.12.0",
"firebase-functions": "^1.0.1"
},
"devDependencies": {
"ts-loader": "^4.2.0",
"typescript": "^2.5.3",
"webpack": "^4.5.0",
"webpack-cli": "^2.0.14",
"webpack-node-externals": "^1.7.2"
},
"private": true
}
my folder structure
Try using: npm i -g webpack-cli.
Here is the official issue on github: https://github.com/webpack/webpack-cli/issues/191
Link globally installed package to your project
npm link webpack-cli
This solved the problem for me
sudo chown -R $USER /usr/local/lib/node_modules
npm i -g webpack-cli
https://flaviocopes.com/npm-fix-missing-write-access-error/
The problem for me it was that I was not using 'sudo' permissions.
If you are using linux based system try typing sudo npm i -g webpack-cli
I had a similar error. For me the answer was to ensure that the whole path to my project is free of spaces, ampersands(&) or any other weird characters.
If you are using Yarn instead NPM to run Webpack globally, you can install webpack using the following commands:
yarn global add webpack
and or
yarn global add webpack-cli

Resources