iwillwen/node-qiniu

Asset.stat方法bug:当AK或SK错误,会导致异常

Closed this issue · 3 comments

Asset.stat 方法没有对request返回的http状态码进行检查,导致在AK或SK错误的情况下会报错:

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at Request._callback (E:\..................\node_modules\node-qiniu\lib\asset.js:132:29)

查了一下资料并进行对比了一下,好像这个其实是七牛官方那边接口有点问题,官方的文档标注:

如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):

{
    "error":   "<errMsg    string>"
}
字段名称 必填 说明
error 与HTTP状态码对应的消息文本

响应状态码

HTTP状态码 含义
200 获取Metadata成功
400 请求报文格式错误
401 管理凭证无效
599 服务端操作失败 如遇此错误,请将完整错误信息(包括所有HTTP响应头部)通过邮件发送给我们
612 目标资源不存在

另外,还有一些没有标注出来

但实际上,631确实返回了包含error的json格式内容{"error":"no such bucket"}
但401却没有返回json格式内容,内容长度是0

request err: null
request statusCode: 401
request body.length: 0
request body:

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at Request._callback (E:\..................\node_modules\node-qiniu\lib\asset.js:132:29)

七牛官方接口固然是一方面,但这个库是否也该增加一层对res.statusCode的检查呢?

謝提醒,我會盡快更新。

我们验证下。