简体   繁体   中英

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM