I'm currently writing my cloud functions in ES6 and transpiling with Babel to target the Node v10 environment. And I've noticed something weird.
Why is that when I import firebase-functions
like this:
import functions from 'firebase-functions';
I get this error:
! TypeError: Cannot read property 'https' of undefined
at Object.<anonymous> (C:\myProject\functions\index.js:28:55)
And to fix it, I need to import it like this:
import * as functions from 'firebase-functions';
While the following import
works just fine for the firebase-admin
:
import admin from 'firebase-admin';
QUESTION
In short terms, the question is:
Why is that:
import functions from 'firebase-functions'; // DOESN'T WORK
import * as functions from 'firebase-functions'; // WORKS
import admin from 'firebase-admin'; // WORKS
Cloud Functions for Firebase is a serverless framework that lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests. Your JavaScript or TypeScript code is stored in Google's cloud and runs in a managed environment.
The reason why import functions from 'firebase-functions';
will not work is because 'firebase-functions'
does not have a "functions" default export.
Hence, this error:
! TypeError: Cannot read property 'https' of undefined
at Object.<anonymous> (C:\myProject\functions\index.js:28:55)
The first option would be to import an entire module's contents and add functions
into the current scope containing all the exports from the module firebase-functions
.
import * as functions from 'firebase-functions'
The second option would be to import a single export from a module, https
in this case, since you are trying to read property https
of 'firebase-functions'
.
import { https } from 'firebase-functions'
More information can be found here.
Hope this clarifies your question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With