我想在特定的文件中组织我的firebase云功能,目前,我有这些3:
- index.ts
- crypto.ts
- webscrape.ts
在这些文件中,我有一些函数使用了其他地方不需要的特定依赖项。
例如,在加密中。我需要crypto-js包来加密一些用户数据并将其存储到数据库中。
我像这样导入它:
import * as CryptoJS from "crypto-js";
参考https://firebase.google.com/docs/functions/handle-dependencies#typescript
另一方面,当我尝试将puppeteer导入webscraper时。是这样的:
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");
这里有什么不同?
我的目标是保持每个函数和文件/模块的依赖关系尽可能小,因为我认为这也将保持每个函数容器的大小小(这是真的吗?)
我不想把所有东西都导入到index中。甚至当我触发一个函数时,它根本不使用这个依赖项。
那么处理这些依赖的正确方法是什么呢?
谢谢!
下面的导入将从该包获取默认导出。
import puppeteer from "puppeteer-extra"
我在Github存储库中查找默认导出,发现。
const defaultExport: PuppeteerExtra = (() => {
return new PuppeteerExtra(...requireVanillaPuppeteer())
})()
export default defaultExport
他们提到了ES6的import和require方法。
// javascript import
const puppeteer = require('puppeteer-extra')
// typescript/es6 module import
import puppeteer from 'puppeteer-extra'
您可以在MDN上阅读更多关于import
的信息。