NodeJS在TypeScript项目中上传文件时遇到麻烦

我试图使用强大的模块上传文件到NodeJS服务器。 上传之后,我想将文件重命名为其他内容,为此我需要获取上传文件的名称和path。 根据强大的文档提供的文档,你必须调用Formidable.File类来获取文件所在的文件path。

这里是文档: https : //github.com/felixge/node-formidable#formidableincomingform

我的项目是用Typescript编写的,所以我为Formidable编写了一个Typescript定义,其中只包含那些我需要调用的文字。 这在另一个文件Upload.ts中被调用

这里是强大的打字稿定义

declare module "formidable" { export class IncomingForm{ uploadDir: String; keepExtensions: Boolean; type: String; parse(req, Function) : void; } export class File{ name: String; path: String; } } 

Upload.ts

 public upload(req, res){ var form = new formidable.IncomingForm(); var file = new formidable.File(); var originalFileName = file.name; form.uploadDir = this.directory; form.keepExtensions = true; form.type = 'multipart'; form.parse(req, function(err, fields, files) { res.writeHead(200, {'content-type': 'text/plain'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: files})); }); return; } 

当我点击“上传”button会导致一个错误,说:

 var file = new formidable.File(); TypeError: undefined is not a function 

我的定义似乎是正确的,我不明白这个错误。

您无法通过创build新的空File实例来获取上载文件的path。

callbackparse方法中的files参数包含上传文件的File对象。