Error deploying with firebase on npm --prefix $RESOURCE_DIR run lint
FirebaseNpmGoogle Cloud-FunctionsFirebase Problem Overview
I have a fresh install of firebase tools (following this tutorial) and I'm trying to upload my first firebase function. I get this issue with the hello-world example that they initialise when you run firebase init (The only set up the functions CLI feature during the init)
If I replace $RESOURCE_DIR
in firebase.json
with my functions folder it works, but of course that Is bad practice and I'd like to find a proper $RESOURCE_DIR
replacement that works.
PS D:\workspace\firebase-functions> firebase deploy
=== Deploying to 'newagent-5221d'...
i deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path D:\workspace\firebase-functions\$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 'D:\workspace\firebase-functions\$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\dtlut\AppData\Roaming\npm-cache\_logs\2018-01-19T15_57_22_990Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code4294963238
Firebase Solutions
Solution 1 - Firebase
Try to replace $RESOURCE_DIR with %RESOURCE_DIR% in your firebase.json
file.
Multi platform solution
As seen on this post let's summarize the configuration for the different platforms you are running on:
Linux
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
PowerShell
"predeploy": [
"npm --prefix $Env:RESOURCE_DIR run lint"
]
Cmd.exe
"predeploy": [
"npm --prefix %RESOURCE_DIR% run lint"
]
Solution 2 - Firebase
It wants to lint your cloud functions, meaning it will check your code for obvious errors like a compiled language would throw errors at compile time.
It's not necessary, you can always remove it by going into firebase.json and updating functions.predeploy to be an empty array.
"functions": {
"predeploy": [],
"source": "functions"
}
Solution 3 - Firebase
you can simply make your firebase.json file like this:
{
"functions": {
"predeploy": [
"npm --prefix ./functions/ run lint",
"npm --prefix ./functions/ run build"
]
}
}
what I'm doing is replace $RESOURCE_DIR with hard coded path of function folder itis working nice for me
Solution 4 - Firebase
SUMMARIZING
-
Install ESLint locally to add "devDependencies" to package.json. Run:
`npm install eslint --save-dev`
-
Workaround for Windows as stated above. Change firebase.json:
`npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
-
Optionally, add the following to package.json:
"scripts": { "lint": "eslint"} or "scripts": { "lint": "eslint.js"}
Solution 5 - Firebase
locate the firebase.json file and then change these lines
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
to
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
it'll work
Solution 6 - Firebase
Modify in firebase.json from "npm --prefix $RESOURCE_DIR run lint
" to "npm --prefix %RESOURCE_DIR% run lint
"
Solution 7 - Firebase
My problem was my node version. I got this error after installing packages with the wrong node version. I ran yarn
setup with node 16 but my project uses node 14. I switched to node 14 before trying to deploy and received this error. I tried the fixes mentioned here and finally realized what my problem was. This is one of those errors which is disinformative...
Solution 8 - Firebase
This one should solve the issue without workaround
npm install -g git://github.com/firebase/firebase-tools#master
please try this installation again in ur project folder it should solve the issue.
Solution 9 - Firebase
It is working my cloud function deploy successfully
"functions": {
"predeploy": [
"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
],`enter code here`
"source": "functions"
Solution 10 - Firebase
side note, if you're using yarn
(and not npm
), you need to specify --cwd
param (instead of --prefix
)
firebase.json
example:
{
...
"functions": {
"predeploy": [
"yarn --cwd \"$RESOURCE_DIR\" lint",
"yarn --cwd \"$RESOURCE_DIR\" build"
]
},
...
}
Solution 11 - Firebase
None of the previous suggestions worked for me. So I deleted the function part of the firebase.json file as in below by only keeping the hosting part. Then, I deployed the app successfully without functions.
Then, I cd into functions from the terminal and deployed the functions by using firebase deploy --only
functions
{
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
Solution 12 - Firebase
Another possible issue is there are some errors in the code for example, I got this error message
55:47 error Expected '!==' and instead saw '!=' eqeqeq
69:47 error Expected '!==' and instead saw '!=' eqeqeq
After I fixed and deploy again and it work. this attached image