数据类型 'string' JSON 上不存在属性'url'



当我上传一些东西到azure blob存储时,我正在尝试发送一些JSON的url。对象为req.files。当我console.logreq.files时,我得到了类似的东西:

[
{
fieldname: 'chooseFile',
originalname: 'video.mov',
encoding: '7bit',
mimetype: 'video/quicktime',
container: 'asset-afe1b5d0-cf8f-11eb-9615-13b96d691770',
blobPath: '1623950892848-aGxhZC5tb3Y%3D.mov',
url: 'https://cdn.example.com/item/this/that'
}
]

如果我尝试,比如说,console.logreq.files.url,我会得到一个类似这样的错误:

Property 'url' does not exist on type '{ [fieldname: string]: File[]; } | File[]'.
Property 'url' does not exist on type 'File[]'

所以我试过这个:

const filedata = JSON.stringify(req.files)
console.log(filedata)

它返回的内容更像这样:

[{"fieldname":"chooseFile","originalname":"video.mov","encoding":"7bit","mimetype":"video/quicktime","container":"path","blobPath":"item.mov","url":"https://cdn.example.net/this/path/here/there"}]

现在,如果我尝试console.logfiledata.url,我会得到这样的错误:

Property 'url' does not exist on type 'string'
这里的第一个问题是req.files是一个数组,而不是对象。因此,您应该访问req.files[0].url以访问req.files中的第一个元素,然后获取其url属性。

第二个问题是在JSON.stringify初始化数组之后尝试获取属性urlJSON.stringify返回JS对象的字符串表示,并且字符串没有url属性。

因此,您很可能是指console.log(req.files[0].url),假设您知道req.files中只有一个元素,或者您只需要第一个元素。

尽管所有的注释和答案都声称这是一个数组,但在查看包的源代码后,我看到了JSON.parse。不,这不是一个数组。我做的每件事都很好。这是一个无关的Typescript错误。我通过将req的类型从express.Request更改为any来修复它。那么req.files.url就可以正常工作了。

相关内容

  • 没有找到相关文章