NodeJS TypeError,尝试使用Blob或File中的text()时,text不是函数

rm5edbpk  于 2022-12-12  发布在  Node.js
关注(0)|答案(1)|浏览(354)

我试图弄清楚为什么我的node.js express后端使用TypeScript无法识别typescript lib.dom.d.ts文件中定义的函数。有问题的接口/类型是File/Blob,一个File扩展一个Blob,而我试图访问的函数是Blob接口中的text(),下面从typescript v3.9.5的lib.dom.d.ts文件中执行

interface Blob {
    readonly size: number;
    readonly type: string;
    arrayBuffer(): Promise<ArrayBuffer>;
    slice(start?: number, end?: number, contentType?: string): Blob;
    stream(): ReadableStream;
    text(): Promise<string>;
}

我在前端从div生成PDF,然后将PDF作为文件类型发送到后端。
在VSCode中,我可以将File转换为File或Blob,以便从Blob接口查看上面列出的所有只读和函数的IntelliSense自动完成选项。
尽管如此,我的API还是在尝试使用.text()函数时失败,声明${variableName}.text不是函数。
我已尝试根据此question将我的TypeScript更新为v3.9.5,并已将我的TypeScript版本设置为我的工作区版本。
我已经确认传入的数据是以File类型传入的。在尝试使用text()函数之前,请记录变量。我还尝试使用IntelliSense将变量转换为File和Blob以完成调用。
我试图擦除运行我的nodeJS express后端的docker容器。

cbjzeqam

cbjzeqam1#

感谢Konrad,我通过输出${variable} instanceof File/Blob确定问题是NodeJS没有Blob或File类型,每个类型都给我一个File/Blob is not defined错误。看起来VSCode/Typescript错误地暗示它们确实存在。
这是我想出来的解决办法

function filePathToBase64(file: string): string {
  let bitmap: Buffer = fs.readFileSync(file);
  return buffer.from(bitmap).toString('base64');
}

我使用了NodeJS的fs并读取传入FormData的文件路径,该路径类似于/tmp/${random generated path}
干杯干杯干杯

相关问题