Reputation: 857
Functions deploy had errors. To continue deploying other features (such as database), run:
firebase deploy --except functions
Error:
Functions did not deploy properly.
Upvotes: 61
Views: 41166
Reputation: 425
In my case firebase deploy failed with the error "Error: Functions did not deploy properly." and no further explanation. I noticed that no functions could be deployed even the ones I didn't touch. So I checked for dependencies and I found that a library was not present in the "package.json".
So I execute this command:
cd functions && rm -rf node_modules && rm package-lock.json && npm install && npm install [specific Librairy not in package.json] && firebase deploy
After that the deployment succeeded and the missing dependency appeared in the package.json
Upvotes: 5
Reputation: 582
In case you are trying to deploy a database trigger, make sure to explicit the database's instance if you have more than one. By the Functions console page, you can see more details about the deploy error. In my case it was:
Database instance 'projects/_/instances/<DEFAULT_DATABASE_NAME>/...' has been disabled
To explicit the database instance:
.database.instance(<NEW_DATABASE_NAME>).ref
Upvotes: 0
Reputation: 799
If everything mentionned up there is not working for you then subscribe to the blaze plan
https://console.firebase.google.com/u/0/project/_/overview?purchaseBillingPlan=metered
Upvotes: 0
Reputation: 61
I had the same problem. updating node engine to 16 in package.json solved the issue.
My nodejs local version was 16.
{
...
"engines": {
"node": "16"
},
"main": "lib/index.js",
"dependencies": { ... }
}
Upvotes: 0
Reputation: 1
If u are using SSR you need declare your node version In my case my node version is 14 and firebase was deploying with 10.0 I set this config on angular.json
"functionsNodeVersion": 14
"serve-ssr": {
"builder": "@nguniversal/builders:ssr-dev-server",
"options": {
"browserTarget": "Rioja-web:build",
"serverTarget": "Rioja-web:server"
},
"configurations": {
"production": {
"browserTarget": "Rioja-web:build:production",
"serverTarget": "Rioja-web:server:production"
}
}
},
"prerender": {
"builder": "@nguniversal/builders:prerender",
"options": {
"browserTarget": "Rioja-web:build:production",
"serverTarget": "Rioja-web:server:production",
"routes": [
"/"
]
},
"configurations": {
"production": {}
}
},
"deploy": {
"builder": "@angular/fire:deploy",
"options": {
"ssr": true,
"functionsNodeVersion": 14
}
}
}
Upvotes: 0
Reputation: 105
I deleted the recently added 3rd party library (from package/package-lock.json as well). And checked the name of the function to not be a duplicate. This worked for me.
Upvotes: 0
Reputation: 111
Functions were working in emulator, but couldn't be deployed. When I deployed functions using debug, I got no more specific info.
Then I found out, that my IDE accidentally imported lib (that I wasn't even using) from parent folder where is my Svelte project located.
Removing that import fixed my error, obviously.
Upvotes: 0
Reputation: 311
Follow the steps below:
npm install
before continuing.\nnpm ERR! \nnpm ERR! \nnpm ERR! Invalid: lock file's [email protected] does not satisfy body-parser@~1.0.1\nnpm ERR!
This should work.
If you get a 403 error from your hosting URL after re-deploying, your CLI version could be out of date:
Upvotes: 1
Reputation: 447
In my case, the location for the Firestore was not correctly set. From the Functions Documentation:
By default, functions run in the
us-central1
region.
In my case, Firestore was set up on a different location. You can find this under Project Settings, at Default GCP resource location
.
To fix it, simply make the following change:
// Before
functions.firestore.document("...").onCreate(...)
// After
functions.region("asia-east2").firestore.document("...").onCreate(...)
Upvotes: 1
Reputation: 106
Recently Firebase lets you use Functions only if you have the Blaze-Pay as you go plan. So you cannot deploy functions as well, and you will get this same error message without any further clarifications.
Upvotes: 4
Reputation: 119
It happened the same to me but unfortunately I had not any error with --debug
.
I then deleted all my deployed functions in the firebase console and
cd functions
rm -rf node_modules
npm install
firebase deploy --only functions
and it worked like magic.
Upvotes: 0
Reputation: 275
$
in path causes Error: Functions did not deploy properly.
before:
`export const newMessage = functions.firestore.document('chats/${chatId}/messages/${messageId}').onCreate(handleNewMessage())`
after:
`export const newMessage = functions.firestore.document('chats/{chatId}/messages/{messageId}').onCreate(handleNewMessage())`
Upvotes: 1
Reputation: 21
firebase functions:log
This allowed me to find out the problem in my case: one of the packages was not listed among the dependencies in package.json
Upvotes: 0
Reputation: 119
was with the same error, I ended up solving it by updating package.json
from:
"engines": {
"node": "12"
},
to:
"engines": {
"node": "14"
},
Upvotes: 1
Reputation: 5087
Try running deploy with --debug
. For example: firebase --debug deploy
.
In my case the function looked like this:
exports.test = functions.firestore.document('chats').onCreate((snap, context) => {
...
});
The debug log contained the following error message:
fieldViolations=[field=event_trigger, description=Expected value chats to match regular expression [^/]+/[^/]+(/[^/]+/[^/]+)*]]
And that's when I realized that chats
is not a document but a collection. I changed the path to that of the collection and everything worked fine.
EDIT:
To view more logs you can also try:
firebase functions:log
or
firebase functions:log --only <FUNCTION_NAME>
Link to documentation.
Upvotes: 71
Reputation: 37
I faced a similar problem, but I was using Typescript.
It was basically targeting a non-supported javascript version (ES2020). I changed the tsconfig.json
and it deployed normally
"lib": [
"es2019",
"es2020.bigint",
"es2020.string",
"es2020.symbol.wellknown"
],
"module": "commonjs",
"target": "es2019"
Upvotes: 2
Reputation: 482
I got this error as well, I had the problem that a dependency was missing in the package.json file.
By running
firebase --debug deploy
it returned an error on the user code.
firebase functions:log
gave then the specifics, that a package was not included.
Upvotes: 9
Reputation: 15680
In my case, After a long time of searching, I found the reason to be that I had disabled billing for the project for debugging.
It worked fine now after I enabled it in the Google cloud console
.
It's really sad how firebase can't show any useful error message to suggest the problem. I found this after many trials.
Upvotes: 2
Reputation: 59
I was running into the same generic error message, and ended up running (as mentioned in this question):
firebase --debug deploy --only functions:[functionName]
This revealed the actual issue (my project did not have a default GCP resource location, fix for this described here: Firebase Project Initialization Error: Cloud resource location is not set for this project)
Once I set the GCP resource location, function deployed without issue!
Upvotes: 3
Reputation: 405
I deleted yarn.lock
then error goes away. I think package-lock.json and yarn.lock should not exist together.
Upvotes: 7
Reputation: 99
try to add this
"runtime": "nodejs12"
in your firebase,json
example :
"functions": {
"source": ".",
"ignore": [
".firebase/**",
"**/node_modules/**",
"**/public/**",
".firebaserc",
"firebase.json",
"postcss.config.js",
"README.md",
"tailwind.config.js"
],
"runtime": "nodejs12"
}
Upvotes: 1
Reputation: 2067
Mine was about;
"Function deployment failed because the billing account is not available."
So I had pending payment, after paying, it worked as expected.
Upvotes: 2
Reputation: 4689
If anyone gets here trying to deploy ssr functions in angular universal with firebase, it is because firebase is not included in your functions.
1.) cd functions
2.) npm i firebase@latest
3.) npm run deploy
4.) cd ..
5.) now when you run ng deploy
it should work correctly... The key here is to add firebase, and deploy with npm run deploy
first...
Upvotes: 1
Reputation: 5491
Deleting the build
functions folder worked to me
Upvotes: 0
Reputation: 375
I had the same problem. The problem came from the fact that I had an index.js file and package.json file in the root folder and, after running the firebase functions init command, also an index.js and package.json in the functions folder. The dependencies are only listed in the package.json file in the root folder, not in the functions folder. I copied the dependencies to the package.json file in the functions folders and everything worked like a charm.
Upvotes: 0
Reputation: 1861
I had same problem with Firebase project deployment. Then figure out error and find that some module paths are cause problem. Then i changed the path of that module.
To try redeploying those functions, run: firebase deploy --only functions:api,functions:createScream
To continue deploying other features (such as database), run: firebase deploy --except functions
Error: Functions did not deploy properly.
The error shows that could not find modules.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module (../key/your secret key.json) '
Then i changed the path of my secret key that is required for login credentials and put it in different folder. Then run firebase deploy
.
That work for me.
Upvotes: 0
Reputation: 352
My firebase couldnt find the modules firebase-functions and firebase-admin on deploy because I wrote them in devDependencies instead of just dependencies. But after it ... I still had an issue. But this solved it for me: https://github.com/nuxt/nuxt.js/issues/2714#issuecomment-423048343.
Just notice node 8 as engine object in your function's folder package.json and add the babel snippet in your nuxt config.
Upvotes: 0
Reputation: 623
Just close whatever IDE you're using and then reopen it. Then on node redeploy your functions. This should resolve the issue.
Upvotes: 13
Reputation: 1265
I had the same issue with Firestore ,my problem was that the path to the document was bad. I had a slash at the beginning and the end of the path to my document like I used to do with Firebase Realtime Database path. Hope it helps someone.
Upvotes: 22