Ad

How To Run Pub-Sub Functions In Firebase Functions Shell

I'm unable to run my pub-sub triggers in local Cloud Functions Shell. I've created Cloud Functions in the following way:

export const sendNotifications = functions.pubsub.schedule('0 10 * * *').timeZone('Asia/Kolkata').onRun(async (context) => {
    console.log('running sendNotificationForActivities');
    await sendMessages();
    return 0;
}

As mentioned here, I try to run firebase functions:shell from my system followed by:

> sendNotifications({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

or

> sendNotifications({})

and other variants. Following is the error stack trace I received:

firebase > sendNotificationForActivities({})
'Successfully invoked function.'
firebase > ⚠  TypeError: Cannot read property 'params' of undefined
    at cloudFunction (/Users/mayurdhurpate/code/pruoo_app/backend_admin/functions/node_modules/firebase-functions/lib/cloud-functions.js:109:38)
    at Run (/Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:458:20)
    at /Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:442:19
    at Generator.next (<anonymous>)
    at /Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:3:12)
    at Run (/Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:435:12)
    at /Users/mayurdhurpate/.npm-global/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:457:15
    at Generator.next (<anonymous>)
⚠  Your function was killed because it raised an unhandled error.

I think I might be missing a required params field but I couldn't find the right way to enter the parameters. I'm using [email protected] on MacOS.

Ad

Answer

I have the same error. The error is located in cloud-functions.js:117:28.

He is trying to access a key of context even if context does not exist.

enter image description here I updated to the newest version but the error still persists.

As workaround I added this code at line 89 in cloud-functions.js: context = context || {};

enter image description here

This solves the error and I can use the firebase shell.

I hope this nasty hack helps. Until Google fixes their code or updates the documentation.

Dominik

Ad
source: stackoverflow.com
Ad