首页 > 解决方案 > 如何在 ES6 语法中导入 firebase-functions 和 firebase-admin 以使用 Babel for Node 10 进行转译

问题描述

我目前正在用 ES6 编写我的云函数,并使用 Babel 进行编译以针对 Node v10 环境。我注意到了一些奇怪的事情。

为什么当我firebase-functions这样导入时:

import functions from 'firebase-functions';

我收到此错误:

!  TypeError: Cannot read property 'https' of undefined
    at Object.<anonymous> (C:\myProject\functions\index.js:28:55)

为了修复它,我需要像这样导入它:

import * as functions from 'firebase-functions';

虽然以下import适用于firebase-admin

import admin from 'firebase-admin';

问题

简而言之,问题是:

这是为什么:

import functions from 'firebase-functions';            // DOESN'T WORK
import * as functions from 'firebase-functions';       // WORKS
import admin from 'firebase-admin';                    // WORKS

标签: javascriptnode.jsfirebasegoogle-cloud-functionsfirebase-admin

解决方案


之所以import functions from 'firebase-functions';不起作用是因为'firebase-functions'没有“函数”默认导出。

因此,此错误:

!  TypeError: Cannot read property 'https' of undefined
    at Object.<anonymous> (C:\myProject\functions\index.js:28:55)

解决方案:

第一个选项是导入整个模块的内容并添加functions到包含模块所有导出的当前范围firebase-functions

import * as functions from 'firebase-functions'

第二种选择是从模块导入单个导出,在这种情况下,https因为您正在尝试读取https.'firebase-functions'

import { https } from 'firebase-functions'

更多信息可以在这里找到。

希望这能澄清你的问题。


推荐阅读