【问题标题】:NodeJS cannot read property of JSON which does exist?NodeJS无法读取确实存在的JSON属性?
【发布时间】:2016-12-26 02:53:34
【问题描述】:

我的一段代码突然出现了一个意外问题,该代码已经正常工作了数周。

在以下请求和(部分)响应中:

//request 
let campaignRes = request('POST', reqUrl, campaignOptions);

//body of response
{"type":"Buffer","data":[ //some integer values ]}

您可以看到“数据”字段明显存在,并且我已经可以通过以下方式访问它几个星期了:

console.log(JSON.stringify(campaignRes.body));
let campaignData = JSON.parse(campaignRes.getBody('utf8')).body.data;

但是,这现在会产生错误:

TypeError: Cannot read property 'data' of undefined
at Object.MongoClient.connect.MongoClient.connect [as generateReport] (/mtpath/reports.js:31:68)
at Object.<anonymous> (/mypath/test.js:7:22)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:146:18)
at node.js:404:3

我有点不明白为什么这个错误现在发生而不是更早发生。

任何帮助将不胜感激。谢谢!

更新:

    let campaignData = campaignRes.body.data;

没有比这更好的了。

【问题讨论】:

  • 向我们展示campaignRes.getBody('utf8') 的值。为什么你认为结果包含body?此外,您应该始终检查JSON.parse 返回的值。试试这个:var parsedJson = JSON.parse(campaignRes.getBody('utf8')); console.log(parsedJson ? parsedJson.data : '(failed to parse JSON)');
  • 谢谢!你说的很对,以前和现在的区别是没有body,因为现在有错误!似乎有人更改了此帐户的密码。

标签: json node.js express request undefined


【解决方案1】:

正如上面 Rusian Osmanov 间接确定的那样,问题只是此响应中没有 body。这在以前的作品中正常工作的原因是当时有一个 body,但现在不再是(由于某些凭据被更改,我现在收到此请求的错误响应)。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2022-11-29
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多