我想弄清楚为什么我的node.js express后端使用TypeScript不识别在TypeScript lib.dom.d.ts文件中定义的函数。所讨论的接口/类型是文件/Blob,文件扩展Blob和我试图访问的函数是从Blob接口的text(),从lib.dom.d.ts文件从typescript v3.9.5
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或Blob,以查看Blob接口中列出的所有只读和函数的智能感知自动完成选项。
尽管如此,当我尝试使用.text()函数时,我的API失败了,声明${variableName}。文本不是函数
我已经尝试更新我的TypeScript v3.9.5每个这个问题并把TypeScript版本设置为我的Workspace版本。
我已经确认传入的数据是通过控制台作为文件类型传入的。在尝试使用text()函数之前记录变量。我还尝试将变量转换为一个文件和一个Blob使用智能感知来完成调用。
我试图擦除我的docker容器,运行我的nodeJS express后端。
多亏了Konrad,我确定问题是NodeJS没有输出${variable} instanceof File/Blob
的Blob或文件类型,每种类型都给了我一个文件/Blob未定义错误。看起来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}
欢呼。