如何为 firebase 云功能导入基于模块的依赖项?

How to import module based dependencies for firebase cloud functions?

我想在特定文件中组织我的 firebase 云函数, 目前,我有这 3 个:


在这些文件中,我有使用其他地方不需要的特定依赖项的函数。

比如在crypto.ts中我需要crypto-js包来加密一些用户数据并存入数据库

所以我是这样导入的:

import * as CryptoJS from "crypto-js";

按照https://firebase.google.com/docs/functions/handle-dependencies#typescript

中的建议

另一方面,当我尝试像这样将 puppeteer 导入 webscrape.ts 时:

import * as puppeteer from"puppeteer-extra";

然后调用 puppeteer.launch(); 给我一个错误:

Property 'launch' does not exist on type 'typeof import("c:/Users/username/Desktop/project/firebasee/functions/node_modules/puppeteer-extra/dist/index")'

而且它只在我 const puppeteer = require("puppeteer-extra");

时有效

这里有什么区别?


我的目标是使每个函数和 file/module 的依赖性尽可能小,因为我认为这也会使每个函数容器的大小保持较小(这是真的吗?)

我不想将所有内容导入 index.ts ,即使我触发了一个根本不使用此依赖项的函数。

那么处理这些依赖关系的正确方法是什么?

谢谢!

以下导入将从该包中获取默认导出。

import puppeteer from "puppeteer-extra"

我在 Github 存储库中查找 default export 并找到了。

const defaultExport: PuppeteerExtra = (() => {
  return new PuppeteerExtra(...requireVanillaPuppeteer())
})()

export default defaultExport

他们提到了 ES6 import 和 require 方法 here

// javascript import
const puppeteer = require('puppeteer-extra')

// typescript/es6 module import
import puppeteer from 'puppeteer-extra'

您可以在 MDN 上阅读有关 import 的更多信息。