Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to import firebase-functions and firebase-admin in ES6 syntax for transpiling with Babel for Node 10

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
like image 708
cbdeveloper Avatar asked Nov 12 '19 11:11

cbdeveloper


People also ask

What are cloud functions firebase?

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.


1 Answers

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)

Solution:

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.

like image 132
sllopis Avatar answered Oct 17 '22 09:10

sllopis