首页 > 解决方案 > TypeScript Ghostscript 导入更改为 gs_

问题描述

好吧,这有点奇怪,我有一个在 Google Cloud 环境中运行的云功能,用 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

有谁知道它为什么要更改名称,它可能是保留名称吗?


更新和修复
将 ghostscript 库的导入更改为:

const gs = require("gs")

在@Nicholas Tower 的帮助下解决了这个问题

标签: node.jstypescriptfirebasegoogle-cloud-functionsghostscript

解决方案


我正在创建一个社区 Wiki 答案,以便将来参考类似问题的答案。根据 Nicholas Tower 的评论,这个问题的解决方案是重构 gs 库的导入:

import gs from "gs";

至:

const gs = require("gs")

有关更多信息,请参阅处理 Firebase 函数依赖项处理的文档页面。


推荐阅读