ESLint error while trying to deploy firebase functions

34,627

Solution 1

The only way I can imagine that your project got into this state is if you refused to allow npm to install dependencies at the time of project creation. So when you asks you this:

? Do you want to install dependencies with npm now?

You may have answered 'No'. This would prevent the eslint package from being installed, and you would see that error.

Otherwise, you may have deleted the eslint installed package under node_modules somehow. You can run npm install from the functions folder to recreate everything needed under node_modules.

Solution 2

Easy fix. Inside your package.json change

> "lint": "eslint ."

to

"lint": "eslint",

Solution 3

Had the same problem I reinstalled npm

npm install npm -g

then reinitiated the Firebase functions (you have to overwrite all files and make sure to install EsLine the debugging and install all dependencies ) yes press Y for any request

Firebase init functions

and everything worked just fine after deploying again

Firebase deploy

Solution 4

If you found -prefix "%REASOURCE_DIR%" run init type error while deploying firebase project, then you have to edit some code in firebase.json file. Here is an Exampleenter image description here

Solution 5

I had a similar error appear. I found out that my directory that held the firebase project was named firebase/database. I removed the / and made the directory name firebase-database. Hopefully that helps someone.

Share:
34,627
X09
Author by

X09

Updated on November 14, 2021

Comments

  • X09
    X09 over 2 years

    I tried deploying a firebase functions but it keeps failing due to some issue with ESLint. I have also tried googling the answer but everything I am seeing is all Greek to me.

    I have also stumbled on this and this answer but it appears they're not applicable to my scenario.

    My Function

    // // Create and Deploy Your First Cloud Functions
    // // https://firebase.google.com/docs/functions/write-firebase-functions
    //
    // exports.helloWorld = functions.https.onRequest((request, response) => {
    //  response.send("Hello from Firebase!");
    // });
    
    
    //import firebase functions modules
    const functions = require("firebase-functions");
    //import admin module
    const admin = require("firebase-admin");
    admin.initializeApp(functions.config().firebase);
    
    // Listens for new messages added to messages/:pushId
    exports.pushNotification = functions.database.ref("/Message").onWrite( event => {
        //  Grab the current value of what was written to the Realtime Database.
        var valueObject = event.data.val();
        // Log the event
        console.log("Push notification event triggered for " + valueObject.title);
    
        //if(valueObject.title != null) {
          //valueObject.photoUrl= "Sent you a photo!";
       // }
    
      // Create a notification
        const payload = {
            data: {
                body:valueObject.body,
                imgUrl: valueObject.imgUrl,
                postUrl: valueObject.postUrl,
                title: valueObject.title
            },
        };
    
      //Create an options object that contains the time to live for the notification and the priority
        const options = {
            priority: "high",
            timeToLive: 60 * 60 * 24
        };
    
    
        return admin.messaging().sendToTopic("Posts", payload, options);
    });
    

    Log

    0 info it worked if it ends with ok
    1 verbose cli [ '/home/xoxo/.nvm/versions/node/v9.5.0/bin/node',
    1 verbose cli   '/home/xoxo/.nvm/versions/node/v9.5.0/bin/npm',
    1 verbose cli   '--prefix',
    1 verbose cli   '/home/xoxo/Android/Projects/FirebaseFunctions/functions',
    1 verbose cli   'run',
    1 verbose cli   'lint' ]
    2 info using [email protected]
    3 info using [email protected]
    4 verbose run-script [ 'prelint', 'lint', 'postlint' ]
    5 info lifecycle functions@~prelint: functions@
    6 info lifecycle functions@~lint: functions@
    7 verbose lifecycle functions@~lint: unsafe-perm in lifecycle true
    8 verbose lifecycle functions@~lint: PATH: /home/xoxo/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/xoxo/Android/Projects/FirebaseFunctions/functions/node_modules/.bin:/home/xoxo/.nvm/versions/node/v9.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
    9 verbose lifecycle functions@~lint: CWD: /home/xoxo/Android/Projects/FirebaseFunctions/functions
    10 silly lifecycle functions@~lint: Args: [ '-c', 'eslint .' ]
    11 info lifecycle functions@~lint: Failed to exec lint script
    12 verbose stack Error: functions@ lint: `eslint .`
    12 verbose stack spawn ENOENT
    12 verbose stack     at ChildProcess.<anonymous> (/home/xoxo/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:48:18)
    12 verbose stack     at ChildProcess.emit (events.js:160:13)
    12 verbose stack     at maybeClose (internal/child_process.js:943:16)
    12 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
    13 verbose pkgid functions@
    14 verbose cwd /home/xoxo/Android/Projects/FirebaseFunctions
    15 verbose Linux 4.13.0-32-generic
    16 verbose argv "/home/xoxo/.nvm/versions/node/v9.5.0/bin/node" "/home/xoxo/.nvm/versions/node/v9.5.0/bin/npm" "--prefix" "/home/xoxo/Android/Projects/FirebaseFunctions/functions" "run" "lint"
    17 verbose node v9.5.0
    18 verbose npm  v5.6.0
    19 error file sh
    20 error code ELIFECYCLE
    21 error errno ENOENT
    22 error syscall spawn
    23 error functions@ lint: `eslint .`
    23 error spawn ENOENT
    24 error Failed at the functions@ lint script.
    24 error This is probably not a problem with npm. There is likely additional logging output above.
    25 verbose exit [ 1, true ]
    

    Console Output

    xoxo@xo9:~/Android/Projects/FirebaseFunctions$ firebase deploy
    
    === Deploying to 'testproject-a1bda'...
    
    i  deploying functions
    Running command: npm --prefix $RESOURCE_DIR run lint
    
    > functions@ lint /home/xoxo/Android/Projects/FirebaseFunctions/functions
    > eslint .
    
    sh: 1: eslint: not found
    npm ERR! file sh
    npm ERR! code ELIFECYCLE
    npm ERR! errno ENOENT
    npm ERR! syscall spawn
    npm ERR! functions@ lint: `eslint .`
    npm ERR! spawn ENOENT
    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 WARN Local package.json exists, but node_modules missing, did you mean to install?
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/xoxo/.npm/_logs/2018-02-03T22_35_55_608Z-debug.log
    
    Error: functions predeploy error: Command terminated with non-zero exit code1
    

    Package.js

    {
      "name": "functions",
      "description": "Cloud Functions for Firebase",
      "scripts": {
        "lint": "./node_modules/.bin/eslint .",
        "serve": "firebase serve --only functions",
        "shell": "firebase experimental:functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
      },
      "dependencies": {
        "firebase-admin": "~5.8.1",
        "firebase-functions": "^0.8.1"
      },
      "devDependencies": {
        "eslint": "^4.12.0",
        "eslint-plugin-promise": "^3.6.0"
      },
      "private": true
    }
    

    enter image description here

    Please what am I doing wrong?

  • JavaBeast
    JavaBeast over 5 years
    FYI I just received this error by duplicating my project into a new directory. None-the-less navigating to functions and running rm -rf node_modules/ && npm install and npm cache clean --force as suggested fixed it. Thank you!
  • Nasir
    Nasir over 4 years
    Perfectly worked for me, I think for ESLint dependencies was missing,
  • damingzi
    damingzi almost 4 years
    what's the side effect of removing this eslint ?
  • Eneko
    Eneko over 3 years
    It is important to note that you must run npm install from functions folder, not the project folder. I missed that part.
  • Sherry
    Sherry about 3 years
    just wont run the lintting and stop the deployment due to errors in that. not the best practice so better to resolve any eslint dependencies. This worked for me in the meantime though just to get going.
  • Reiko Dev
    Reiko Dev over 2 years
    Thank you brother, you saved some days of my life!
  • Lalit Fauzdar
    Lalit Fauzdar over 2 years
    Removing the . from "lint": "eslint --ext .js,.ts ." to "lint": "eslint --ext .js,.ts" worked, why though?