user12363531
user12363531

Reputation:

firebase node.js 10 Deployment error. Function failed on loading user code. Function cannot be initialized

I keep getting these errors when deploying my functions to firebase as seen below they tell me to look into my logs as my logs on in firebase function state - Error: function terminated. Recommended action: inspect logs for termination reason. Function cannot be initialized.

any ideas where my issue is? all relevant code is below

⚠ functions[onUserImageChange(europe-west1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

⚠ functions[onScreamDelete(europe-west1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

⚠ functions[createNotificationOnComment(europe-west1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

⚠ functions[api(us-central1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

⚠ functions[createNotificationOnLike(europe-west1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

⚠ functions[deleteNotificationOnUnLike(europe-west1)]: Deployment error. Function failed on loading user code. Error message: Error: please examine your function logs to see the error cause: https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs

/////////////index.js//////////

const functions = require('firebase-functions');
const app = require('express')();
const FBAuth = require('./util/fbAuth');


const { db } = require('./util/admin');





const firebase = require('firebase')

const config = require('./util/config')



firebase.initializeApp(config);


const { getAllScreams, 
    postOneScream, 
    getScream,
    commentOnScream,
    likeScream,
    unlikeScream,
    deleteScream
} = require('./handlers/screams');


const { signup, 
    login, 
    uploadImage,
    addUserDetails,
    getAuthenticatedUser,
    getUserDetails,
    markNotificationsRead,

 } = require('./handlers/users');



//scream routes
app.get('/screams', getAllScreams);
app.post('/scream', FBAuth, postOneScream );
app.get('/scream/:screamId', getScream);
app.get('/scream/:screamId/like',FBAuth,likeScream);
app.get('/scream/:screamId/unlike',FBAuth,unlikeScream);
app.delete('/scream/:screamId/',FBAuth,deleteScream);



app.post('/scream/:screamId/comment', FBAuth,commentOnScream);


//users route
app.post('/signup', signup);
app.post('/login', login);
app.post('/user/image',FBAuth, uploadImage);
app.post('/user', FBAuth, addUserDetails);
app.get('/user', FBAuth, getAuthenticatedUser);
app.get('/user/:handle', getUserDetails);
app.post('/notifications', FBAuth, markNotificationsRead);




exports.api = functions.https.onRequest(app);




exports.createNotificationOnLike = functions
  .region('europe-west1')
  .firestore.document('likes/{id}')
  .onCreate((snapshot) => {
    return db
      .doc(`/screams/${snapshot.data().screamId}`)
      .get()
      .then((doc) => {
        if (
          doc.exists &&
          doc.data().userHandle !== snapshot.data().userHandle
        ) {
          return db.doc(`/notifications/${snapshot.id}`).set({
            createdAt: new Date().toISOString(),
            recipient: doc.data().userHandle,
            sender: snapshot.data().userHandle,
            type: 'like',
            read: false,
            screamId: doc.id
          });
        }
      })
      .catch((err) => console.error(err));
  });
exports.deleteNotificationOnUnLike = functions
  .region('europe-west1')
  .firestore.document('likes/{id}')
  .onDelete((snapshot) => {
    return db
      .doc(`/notifications/${snapshot.id}`)
      .delete()
      .catch((err) => {
        console.error(err);
        return;
      });
  });
exports.createNotificationOnComment = functions
  .region('europe-west1')
  .firestore.document('comments/{id}')
  .onCreate((snapshot) => {
    return db
      .doc(`/screams/${snapshot.data().screamId}`)
      .get()
      .then((doc) => {
        if (
          doc.exists &&
          doc.data().userHandle !== snapshot.data().userHandle
        ) {
          return db.doc(`/notifications/${snapshot.id}`).set({
            createdAt: new Date().toISOString(),
            recipient: doc.data().userHandle,
            sender: snapshot.data().userHandle,
            type: 'comment',
            read: false,
            screamId: doc.id
          });
        }
      })
      .catch((err) => {
        console.error(err);
        return;
      });
  });

exports.onUserImageChange = functions
  .region('europe-west1')
  .firestore.document('/users/{userId}')
  .onUpdate((change) => {
    console.log(change.before.data());
    console.log(change.after.data());
    if (change.before.data().imageUrl !== change.after.data().imageUrl) {
      console.log('image has changed');
      const batch = db.batch();
      return db
        .collection('screams')
        .where('userHandle', '==', change.before.data().handle)
        .get()
        .then((data) => {
          data.forEach((doc) => {
            const scream = db.doc(`/screams/${doc.id}`);
            batch.update(scream, { userImage: change.after.data().imageUrl });
          });
          return batch.commit();
        });
    } else return true;
  });

exports.onScreamDelete = functions
  .region('europe-west1')
  .firestore.document('/screams/{screamId}')
  .onDelete((snapshot, context) => {
    const screamId = context.params.screamId;
    const batch = db.batch();
    return db
      .collection('comments')
      .where('screamId', '==', screamId)
      .get()
      .then((data) => {
        data.forEach((doc) => {
          batch.delete(db.doc(`/comments/${doc.id}`));
        });
        return db
          .collection('likes')
          .where('screamId', '==', screamId)
          .get();
      })
      .then((data) => {
        data.forEach((doc) => {
          batch.delete(db.doc(`/likes/${doc.id}`));
        });
        return db
          .collection('notifications')
          .where('screamId', '==', screamId)
          .get();
      })
      .then((data) => {
        data.forEach((doc) => {
          batch.delete(db.doc(`/notifications/${doc.id}`));
        });
        return batch.commit();
      })
      .catch((err) => console.error(err));
  });




























// // exports.createNotificationOnLike = functions.region("australia-southeast1")

// exports.createNotificationOnLike = functions.firestore.document('/likes/{id}')
// .onCreate((snapshot) => {

//     console.log(`this is snapshot.data ${snapshot.data}`)

// return db.doc(`/screams/${snapshot.data().screamId}`).get()
// .then(doc => {


//     console.log(`passed here 345g45g4g`)

//     if(doc.exists && doc.data().userHandle !== snapshot.data().userHandle){

//         console.log(`passed doc exists and req is not from own user 345g45g4g`)

//         console.log(`this is snapshot.data ${snapshot.data}`)

//         return db.doc(`/notifications/${snapshot.id}`).set({
//             createdAt: new Date().toISOString(),
//             recipient: doc.data().userHandle,
//             sender: snapshot.data().userHandle,
//             type: 'like',
//             read: false,
//             screamId: doc.id,
//         })
//     } else {
//        console.log('no document exists 3gg45g45g') 
//     }
// })
// .catch((err) => {
//     console.error(err);
// });











// exports.deleteNotificationOnUnLike = functions
// .firestore.document('/likes/{id}')
// .onDelete((snapshot) => {
// return db.doc(`/notifications/${snapshot.id}`)
// .onDelete()
// .catch((err) => {
//     console.error(err);
//     return
// })
// });












// exports.createNotificationOnComment = 
// functions.firestore.document('/comments/{id}')
// .onCreate((snapshot) => {


//     return db.doc(`/screams/${snapshot.data().screamId}`)
//     .get()
//     if(doc.exists && doc.data().userHandle !== snapshot.data().userHandle){
//         return db.doc(`/notifications/${snapshot.id}`).set({
//             createdAt: new Date().toISOString(),
//             recipient: doc.data().userHandle,
//             sender: snapshot.data().userHandle,
//             type: 'comment',
//             read: false,
//             screamId: doc.id,
//         });
//     }
// })
// .catch((err) => {
//     console.error(err);
//     return;
// });






// exports.onUserImageChange = functions.firestore.document('/users/{userId}')
// .onUpdate((change) => {
// console.log(change.before.data());
// console.log(change.after.data());


// if(change.before.data().imageUrl !== change.after.data().imageUrl){


//     console.log("image has changed");

// let batch = db.batch();
// return db.collection('screams').where('userHandle', '==', change.before.data().handle.get())
// .then((data) => {
//     data.forEach(doc => {
//         const scream = db.doc(`/screams/${doc.id}`);
//         batch.update(scream, {userImage: change.after.data().imageUrl});

//     })
//     return batch.commit
// })
// }
// })


// exports.onScreamDelete = functions.firestore.document('./screams/{screamId}')
// .onDelete((snapshot,context) => {

// const screamId = context.params.screamId;
// const batch = db.batch();


// //delete comments
// return db.collection('comments').where('screamId', "==", screamId).get()
// .then(data => {
//     data.forEach(doc => {
//         batch.delete(db.doc(`/comments/${doc.id}`));
    
//     })
//     return db.collection('likes').where('screamId', '==', screamId);
// })

// //delete likes
// return db.collection('likes').where('screamId', "==", screamId).get()
// .then(data => {
//     data.forEach(doc => {
//         batch.delete(db.doc(`/likes/${doc.id}`));
    
//     })
//     return db.collection('notifications').where('screamId', '==', screamId);
// })



// //delete  notifications
// return db.collection('notifications').where('screamId', "==", screamId).get()
// .then(data => {
//     data.forEach(doc => {
//         batch.delete(db.doc(`/notifications/${doc.id}`));
    
//     })
//     return batch.commit();

// })
// .catch((err)  =>{ console.error(err);

// })
// });







// });

////////////////////package.json////////////////////

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "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": "10"
  },
  "dependencies": {
    "busboy": "^0.3.1",
    "firebase": "^7.17.1",
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

Upvotes: 5

Views: 4115

Answers (1)

Rasyid
Rasyid

Reputation: 191

try to type firebase functions:log in your console command. it will show the error more specific

Upvotes: 19

Related Questions