Firebase Function Deployment issue: package.json not found in %RESOURCE_DIR% - node.js

I having problem of deploying Firebase Cloud Functions.
Steps to reproduce
firebase init
select function only
select Firebase Project
select Javascript
use ESLint
install dependencies with npm now
Run firebase deploy
Expected Result
Expecting firebase-tools to deploy the cloud functions.
Actual Result
Receive the following error message:
λ firebase deploy
=== Deploying to '<projects>'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
npm ERR! path ...path\firebaseFunction\%RESOURCE_DIR%\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '...path\firebaseFunction\%RESOURCE_DIR%\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! ...path\AppData\Roaming\npm-cache\_logs\2018-06-17T10_02_45_577Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238
I have tried googled it and follow the solutions on below link but it doesn't work to me:
https://github.com/firebase/firebase-tools/issues/610
Please help!
Thank you.

Try replacing the string "$RESOURCE_DIR" with "%RESOURCE_DIR%" in your "firebase.json" file.
Now run the deploy command again. It worked for me.
Explanation: This fix is for Windows because %RESOURCE_DIR% will be recognized as an environment variable only by Windows command-line interpreters. As an ultimate consequence, the project isn't cross-platform anymore, as mentioned in the answer of this similar question.

1. In firebase.json file
try and replace $RESOURCE_DIRwith %RESOURCE_DIR%
and
"npm --prefix $RESOURCE_DIR run lint" to "npm --prefix %RESOURCE_DIR% run lint"
(the above one just worked around )
2. npm install -g git://github.com/firebase/firebase-tools#master
please try this installation again in ur project folder it should solve the issue

I had the same problem just remove the predeploy from firebase.json file and it will work fine

It looks like you're either using an old version of the Firebase CLI, or a project that was initialized with an old version. The cleanest thing to do would be to upgrade your CLI:
npm install -g firebase-tools
And create a whole new project from scratch with firebase init. Then, reconstruct your new project with the code from the old project.

Solution
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
to
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}

Step1: open firebase.json you will show this JSON file
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
Step2: Delete "npm --prefix \"$RESOURCE_DIR\" run lint", and "npm --prefix \"$RESOURCE_DIR\" run build"
"functions": {
"predeploy": []
}
Now deploy, it works fine

Related

npm run build works fine on local machine but shows error on remote ubuntu server

I'm trying to deploy my MERN app on the digital ocean remote ubuntu server. After git clone, I did npm install to my root folder, client folder, and server folder. But when I tried to run npm start from the root folder then only the server app was running and an error came on the client-side. So I did cd into the client folder and tried the command npm run build (which I did on my local machine as well and the optimized build got created successfully) but it showed the below error on the remote server
> client#0.1.0 build /home/nishant/apps/rentaporta/client
> react-scripts build
Creating an optimized production build...
The build failed because the process exited too early. This probably means the system ran out of memory or someone called `kill -9` on the process.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! client#0.1.0 build: `react-scripts build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the client#0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/nishant/.npm/_logs/2020-10-27T05_22_30_755Z-debug.log
I deleted node_modules, package-lock.json, and tried the npm ci command as well but there was no improvement. My folder structure is
root
client
server
Below is my package.json script in root folder
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"client-install": "npm install --prefix client",
"server-install": "npm install ---prefix server",
"server": "npm start --prefix server",
"client": "npm start --prefix client",
"build-client": "npm run build --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"start": "npm run server-install & concurrently \"npm run build-client\" \"npm run server\""
},
Please, someone, help me. If you need more explanation I'm ready to put more details as needed.
finally, I figured out the problem. My remote ubuntu server had 1GB ram but there was no swap memory. I used the command sudo free -h, and found swap memory was 0. So, I followed this article (https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04) to create the swap memory, and finally, my app got deployed.
Also, cd into your client folder and run this command in the terminal-
$ export NODE_OPTIONS=--max-old-space-size=8192

npm ERR! missing script: deploy

I am deploying my application to github pages but when I run command npm run deploy but i get error
npm ERR! missing script: deploy
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\whoami\AppData\Roaming\npm-cache\_logs\2020-02-05T16_46_06_946Z-debug.log
I have defined deploy in my package.json file
...
"scripts": {
"test": "jest --watchAll --verbose --coverage --runInBand",
"start": "node index.js",
"predeploy":"npm run build",
"deploy":"gh-pages -d build"
}
...
make sure you have save package.json file. In my case i have not saved it so that is why error is coming
Please check the terminal path. In my case, I forgot to change the directory inside my project.
Simply type the following:
cd *name-of-your-project*
Please close the current working terminal and open new terminal and try the command again.

'sed' is not recognized as an internal or external command in Windows

I'm using gatsby mate portfolio but recent local development shows error when I run npm start:
'sed' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gatsby-starter-mate#2.5.1 fix-medium-plugin: `sed -i' ' 's//latest//g' ./node_modules/gatsby-source-medium/gatsby-node.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gatsby-starter-mate#2.5.1 fix-medium-plugin script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
It seems that it's not properly escaping s //
Here's package.json copy of the line it specified:
"name": "gatsby-starter-mate",
"version": "2.5.1",
"description": "Gatsby v2 starter to create a top notch portfolio!",
"main": "index.js",
"scripts": {
"fix-medium-plugin": "sed -i' ' 's/\/latest//g' ./node_modules/gatsby-source-medium/gatsby-node.js",
"prepare": "npm run fix-medium-plugin && gatsby clean",
"build": "npm run prepare && gatsby build",
"develop": "npm run prepare && gatsby develop",
"start": "npm run develop",
"serve": "npm run build && gatsby serve -p 9000",
"lint": "eslint ./src",
"setup": "node ./bin/setup.js",
"e2e:open": "cypress open",
"e2e:ci": "DETERMINISTIC=true start-server-and-test serve http://localhost:9000 'percy exec -- cypress run'"
},
sed is a Unix command. You're likely within powershell in VSCode, you can still use this Gatsby starter you'll just need to run npm start within a unix terminal.
You can install cygwin path into your gatsby directory and enter npm start there and it will run successfully.
I have created a new gatsby project using this mate starter reached the same problem you are having and then confirmed with the creator of mate that there are no alternative solutions at this time other than running it via a unix terminal. Here is a link to the commit that occured on the 21st October 2019 that caused this problem for you and there you will find EmaSuriano's solution to your problem :)

firebase deploy fails with lots of errors [duplicate]

I was having issues with firebase deploy command recently. After firebase deploy command all others were being deployed except firebase (storage, database etc) So I decided to reinstall firebase to fix this situation but after reinstall my problem got bigger. Now none of them are deployed with the following error:
i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\faruk\AppData\Roaming\npm-cache\_logs\2018-01-24T18_21_34_878Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238
After a bit research, I saw some topics about this which advice to change
$RESOURCE_DIR to %RESOURCE_DIR%
in windows systems (I am using windows 10 btw). So, I edited my firebase.json file which is in one upper level of my functions folder. like this. (I don't know if this is the right file that I should edit)
"database": {
"rules": "database.rules.json"
},
"functions": {
"predeploy": [
"npm --prefix %RESOURCE_DIR% run lint"
]
}
}
but after this edit, I started to get another error message like this.
i deploying database, functions
Running command: npm --prefix %RESOURCE_DIR% run lint
Usage: npm <command>
where <command> is one of:
access, adduser, bin, bugs, c, cache, completion, config,
ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
explore, get, help, help-search, i, init, install,
install-test, it, link, list, ln, login, logout, ls,
outdated, owner, pack, ping, prefix, profile, prune,
publish, rb, rebuild, repo, restart, root, run, run-script,
s, se, search, set, shrinkwrap, star, stars, start, stop, t,
team, test, token, tst, un, uninstall, unpublish, unstar,
up, update, v, version, view, whoami
npm <command> -h quick help on <command>
npm -l display full usage info
npm help <term> search for help on <term>
npm help npm involved overview
Specify configs in the ini-formatted file:
C:\Users\faruk\.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config
npm#5.6.0 C:\Program Files\nodejs\node_modules\npm
Error: functions predeploy error: Command terminated with non-zero exit code1
Any advice is appreciated. Thanks in advance.
The error stems from the fact that you have a space somewhere in the path of your project ("Google Drive"):
C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json
Unfortunately, this is confusing the npm command line, and it's taking that as two arguments separated by that space.
Normally, I would expect to be able to place quotes around the whole thing to keep the space from being interpreted that way. So I tried this:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
And it works for me.
I'll follow up with the Firebase team internally about this issue, as well as the fact that changes need to be made for Windows.
What happens actually is that in Windows, firebase.json contains the following by default:
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
Modify it to:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
It worked for me, hope it works for you.
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
I remove that on firebase.json finally, it started to deploy again
For me, none of the above worked. Initially, on a fresh firebase-function install, I was getting error on non-zero exit code2. so I removed the functions directory, re-installed, but on the functions directory configuration step, I chose to say "no" to the add-lint step.
once I chose to not include lint, I got error non-zero exit code1.
from there checked my firebase.json file and looked at the predeploy script. because the deployment process was failing at this point, it was where I started. my firebase.json file looked like this:
{
"functions": {
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
}
}
for some reason I intuitively thought to remove the lint in the predeploy script. this fixed everything. Im on MacOS by the way..
This what work for me after change $RESOURCE_DIR to %RESOURCE_DIR% in firebase.json
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
type this into your console ' firebase deploy --only hosting'. It worked for me
Try running npm install inside the functions folder of the project.
Maybe you are importing one or more node modules in index.ts that isn't installed, in this case you need to install it by running like:
npm install <somemodule> --save
I had the same problem in Windows. What I did was I copied all the files which were in functions folder and passed it to %RESOURCE_DIR% folder and then I run the Firebase deploy and it deployed successfully.
I fixed it: you must pay attention at another place
Do you see the error description
$ firebase deploy --only functions
=== Deploying to 'fix-firebase-functions'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions# lint C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions
> eslint .
C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions\index.js
37:16 warning Avoid nesting promises promise/no-nesting
42:13 error Expected catch() or return promise/catch-or-return
42:13 warning Avoid nesting promises promise/no-nesting
42:31 error Each then() should return a value or throw promise/always-return
✖ 4 problems (2 errors, 2 warnings)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! functions# lint: `eslint .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the functions# lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\vuduc\AppData\Roaming\npm-cache\_logs\2020-06-01T14_38_16_060Z-debug.log
events.js:287
throw er; // Unhandled 'error' event
^
Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT
at notFoundError (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
at verifyENOENT (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:27:25)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
Emitted 'error' event on ChildProcess instance at:
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:30:37)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn npm --prefix "%RESOURCE_DIR%" run lint',
path: 'npm --prefix "%RESOURCE_DIR%" run lint',
spawnargs: []
Error: functions predeploy error: Command terminated with non-zero exit code1
error deploy cloud functions
You need to scroll up to see the error description, the line
functions predeploy error: Command terminated with non-zero exit code1
is just a general description that there is an error to fix before deploying.
This is what really needs attention, which instructions do you need to fix?
✖ 4 problems (2 errors, 2 warnings)
Pay attention here
This fixed it for me:
Go to "firebase.json" file in the root directory of the project
Remove everything inside "predeploy" in firebase.json, and it'll stop running the script which is causing issues.
"redeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
Use redeploy instead predeploy
For me, the issue was (I presume) because firebase couldn't find the script.
Didn't work:
{
"hosting": {
"predeploy": "predeploy.sh",
...
}
Running command: predeploy.sh
events.js:160
throw er; // Unhandled 'error' event
^
Error: spawn predeploy.sh ENOENT
at exports._errnoException (util.js:1020:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
at Module.runMain (module.js:606:11)
at run (bootstrap_node.js:389:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:504:3
Error: hosting predeploy error: Command terminated with non-zero exit code1
Did work: (note the ./)
{
"hosting": {
"predeploy": "./predeploy.sh",
...
}
When Using VS code ,open folder of Firecast (this helps open firebase.json of Resource Directory ) In firebase.json change the code of file to this:
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
In my case I created a function to print logs, something like this:
function log(tag: string, value: any) {
console.log(tag, JSON.stringify(value));
}
When I add async in front of it, it starts exploding the build :)
I solve this by re-initiating firebase init, then not selecting to use eslint. Deploy worked after that.
This can also happen if you dont choose a blaze plan from firebase. basically deployment of cloud functions require a blaze plan activated
I'm on mac and since I moved my firebase project to another directory/laptop, I had this exact issue.
I resolved my issue by just re-initializing my firebase project.
firebase init
Be careful though. Since most of your files already exist, it might want to override them. Just say no to all override questions. Unless of course all your code is pushed to the firebase console ... which it should be 😋
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
I remove that on firebase.json finally, it works for me.

Firebase deploy errors starting with non-zero exit code (space in project path)

I was having issues with firebase deploy command recently. After firebase deploy command all others were being deployed except firebase (storage, database etc) So I decided to reinstall firebase to fix this situation but after reinstall my problem got bigger. Now none of them are deployed with the following error:
i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\faruk\AppData\Roaming\npm-cache\_logs\2018-01-24T18_21_34_878Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238
After a bit research, I saw some topics about this which advice to change
$RESOURCE_DIR to %RESOURCE_DIR%
in windows systems (I am using windows 10 btw). So, I edited my firebase.json file which is in one upper level of my functions folder. like this. (I don't know if this is the right file that I should edit)
"database": {
"rules": "database.rules.json"
},
"functions": {
"predeploy": [
"npm --prefix %RESOURCE_DIR% run lint"
]
}
}
but after this edit, I started to get another error message like this.
i deploying database, functions
Running command: npm --prefix %RESOURCE_DIR% run lint
Usage: npm <command>
where <command> is one of:
access, adduser, bin, bugs, c, cache, completion, config,
ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
explore, get, help, help-search, i, init, install,
install-test, it, link, list, ln, login, logout, ls,
outdated, owner, pack, ping, prefix, profile, prune,
publish, rb, rebuild, repo, restart, root, run, run-script,
s, se, search, set, shrinkwrap, star, stars, start, stop, t,
team, test, token, tst, un, uninstall, unpublish, unstar,
up, update, v, version, view, whoami
npm <command> -h quick help on <command>
npm -l display full usage info
npm help <term> search for help on <term>
npm help npm involved overview
Specify configs in the ini-formatted file:
C:\Users\faruk\.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config
npm#5.6.0 C:\Program Files\nodejs\node_modules\npm
Error: functions predeploy error: Command terminated with non-zero exit code1
Any advice is appreciated. Thanks in advance.
The error stems from the fact that you have a space somewhere in the path of your project ("Google Drive"):
C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json
Unfortunately, this is confusing the npm command line, and it's taking that as two arguments separated by that space.
Normally, I would expect to be able to place quotes around the whole thing to keep the space from being interpreted that way. So I tried this:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
And it works for me.
I'll follow up with the Firebase team internally about this issue, as well as the fact that changes need to be made for Windows.
What happens actually is that in Windows, firebase.json contains the following by default:
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
Modify it to:
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
It worked for me, hope it works for you.
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
I remove that on firebase.json finally, it started to deploy again
For me, none of the above worked. Initially, on a fresh firebase-function install, I was getting error on non-zero exit code2. so I removed the functions directory, re-installed, but on the functions directory configuration step, I chose to say "no" to the add-lint step.
once I chose to not include lint, I got error non-zero exit code1.
from there checked my firebase.json file and looked at the predeploy script. because the deployment process was failing at this point, it was where I started. my firebase.json file looked like this:
{
"functions": {
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
}
}
for some reason I intuitively thought to remove the lint in the predeploy script. this fixed everything. Im on MacOS by the way..
This what work for me after change $RESOURCE_DIR to %RESOURCE_DIR% in firebase.json
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
type this into your console ' firebase deploy --only hosting'. It worked for me
Try running npm install inside the functions folder of the project.
Maybe you are importing one or more node modules in index.ts that isn't installed, in this case you need to install it by running like:
npm install <somemodule> --save
I had the same problem in Windows. What I did was I copied all the files which were in functions folder and passed it to %RESOURCE_DIR% folder and then I run the Firebase deploy and it deployed successfully.
I fixed it: you must pay attention at another place
Do you see the error description
$ firebase deploy --only functions
=== Deploying to 'fix-firebase-functions'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
> functions# lint C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions
> eslint .
C:\Users\vuduc\OneDrive\Tài liệu\Code tutotial practice\test\functions\index.js
37:16 warning Avoid nesting promises promise/no-nesting
42:13 error Expected catch() or return promise/catch-or-return
42:13 warning Avoid nesting promises promise/no-nesting
42:31 error Each then() should return a value or throw promise/always-return
✖ 4 problems (2 errors, 2 warnings)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! functions# lint: `eslint .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the functions# lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\vuduc\AppData\Roaming\npm-cache\_logs\2020-06-01T14_38_16_060Z-debug.log
events.js:287
throw er; // Unhandled 'error' event
^
Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT
at notFoundError (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:6:26)
at verifyENOENT (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:40:16)
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:27:25)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
Emitted 'error' event on ChildProcess instance at:
at ChildProcess.cp.emit (C:\Users\vuduc\AppData\Local\Yarn\Data\global\node_modules\cross-env\node_modules\cross-spawn\lib\enoent.js:30:37)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn npm --prefix "%RESOURCE_DIR%" run lint',
path: 'npm --prefix "%RESOURCE_DIR%" run lint',
spawnargs: []
Error: functions predeploy error: Command terminated with non-zero exit code1
error deploy cloud functions
You need to scroll up to see the error description, the line
functions predeploy error: Command terminated with non-zero exit code1
is just a general description that there is an error to fix before deploying.
This is what really needs attention, which instructions do you need to fix?
✖ 4 problems (2 errors, 2 warnings)
Pay attention here
This fixed it for me:
Go to "firebase.json" file in the root directory of the project
Remove everything inside "predeploy" in firebase.json, and it'll stop running the script which is causing issues.
"redeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint"
]
Use redeploy instead predeploy
For me, the issue was (I presume) because firebase couldn't find the script.
Didn't work:
{
"hosting": {
"predeploy": "predeploy.sh",
...
}
Running command: predeploy.sh
events.js:160
throw er; // Unhandled 'error' event
^
Error: spawn predeploy.sh ENOENT
at exports._errnoException (util.js:1020:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
at Module.runMain (module.js:606:11)
at run (bootstrap_node.js:389:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:504:3
Error: hosting predeploy error: Command terminated with non-zero exit code1
Did work: (note the ./)
{
"hosting": {
"predeploy": "./predeploy.sh",
...
}
When Using VS code ,open folder of Firecast (this helps open firebase.json of Resource Directory ) In firebase.json change the code of file to this:
{
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
]
}
}
In my case I created a function to print logs, something like this:
function log(tag: string, value: any) {
console.log(tag, JSON.stringify(value));
}
When I add async in front of it, it starts exploding the build :)
I solve this by re-initiating firebase init, then not selecting to use eslint. Deploy worked after that.
This can also happen if you dont choose a blaze plan from firebase. basically deployment of cloud functions require a blaze plan activated
I'm on mac and since I moved my firebase project to another directory/laptop, I had this exact issue.
I resolved my issue by just re-initializing my firebase project.
firebase init
Be careful though. Since most of your files already exist, it might want to override them. Just say no to all override questions. Unless of course all your code is pushed to the firebase console ... which it should be 😋
"predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ]
I remove that on firebase.json finally, it works for me.

Resources