好吧,有点奇怪,我有一个在谷歌云环境中运行的云函数,在我的本地机器上用TypeScript编写,它使用了我放在package.json中的Ghostscript引用,如下所示:
"gs": "https://github.com/sina-masnadi/node-gs/tarball/master",
导入到我的函数文件中,如:
import gs from "gs";
我的TypeScript函数如下所示:
await new Promise((res, rej) => {
gs()
.batch()
.nopause()
...follows on from this
然而,当我使用firebase deploy --only functions
部署函数时,编译器会将.js
文件放在一起并上传(正如您所期望的(。只有在上传的.js
函数中,它才会将对Ghostscript导入的引用更改为以下内容:
const gs_1 = require("gs");
然后将功能代码转换为:
yield new Promise((res, rej) => {
gs_1.default()
.batch()
.nopause()
...follows on from this
当这个函数在云中运行时,我会打印出以下错误:
TypeError: gs_1.default is not a function
有人知道它为什么要更改名称吗?它可能是保留名称吗?
更新&FIX
将重影脚本库的导入更改为:
const gs = require("gs")
在@Nicholas Tower 的帮助下解决了这个问题
我正在创建一个Community Wiki答案,以便将来可以参考类似问题的答案。根据Nicholas Tower的评论,这个问题的解决方案是从重构gs库的导入
import gs from "gs";
收件人:
const gs = require("gs")
有关更多信息,有一个文档页面处理Firebase函数依赖关系处理。