【问题标题】:Node.js Unhandled rejection TypeError: Cannot read property '0' of undefined in JavascriptNode.js 未处理的拒绝类型错误:无法读取 Javascript 中未定义的属性“0”
【发布时间】:2019-10-22 15:24:04
【问题描述】:

我正在尝试获取一些代码来监听 API 并返回结果。 根据 API 返回的内容,调用某些函数。

它侦听 API,可以在控制台日志中流式传输数据,以及调用传递适当参数的函数。 但是 它只会在返回之前工作 2 到 15 分钟:

“未处理的拒绝类型错误:无法读取未定义的属性'0'”

经过大量谷歌搜索后,我发现我的问题是我需要在声明时以某种方式定义我的变量值,即使该变量在 API 返回数据之前没有值。虽然我不知道该怎么做,而且我看到的示例不适用于我的代码。


async function main () {
await smoke.api.streamOperations('head', function(err, result){
    var type = result[0] //<--- This is the line that will return a typeError
    var data = result[1]
//More stuff too happen//
}

我希望结果是 API 返回字符串的第一个值。 如果没有 typeError,它会成功。 (它将返回诸如评论、投票、custom_json 等值) TypeError 每次都会发生,只是它会发生多长时间。

我得到的确切错误是:

Unhandled rejection TypeError: Cannot read property '0' of undefined

我该如何避免这种情况???

更新

我删除了 async 和 await 表达式 - 运行更流畅,但仍然遇到相同的类型错误

function main () {
smoke.api.streamOperations('head', function(err, result){
  //var type = 0
    var type = result[0]
    var data = result[1]

【问题讨论】:

    标签: javascript node.js typeerror


    【解决方案1】:

    您的 async / await 语法错误,当您使用 async / await 时,不需要回调函数。所以回调中的值结果是undefined。尝试如下使用:

    async function main () {
        var result = await smoke.api.streamOperations('head');
        var type = result[0]; //<--- This is the line that will return a typeError
        var data = result[1];
        //More stuff too happen//
    }
    

    【讨论】:

    • 它会返回一个承诺。只有我们才能真正使用 async 和 await。他没有提到它会返回承诺。
    • @PrinceDevadoss 那我觉得async await不能用了,正常的callback要去掉async和await关键字才能用。
    • 感谢您的建议,我试了一下,而不是在控制台中给我一个 typeError 并停止脚本。它调用了我在下面编写的错误处理程序:``` if (typeof type === 'undefined') { console.log(result) console.log('Caught undefined promise') } ``` 脚本继续运行在发现错误之后 - 这是一个很好的步骤。但它破坏了 API 监听代码的其余部分。而不是按预期返回“投票”或“评论”等。它返回 [function]
    • @freshcoder 你能把剩下的代码贴出来吗?如果没有运行代码的能力,要理解确切的问题有点困难。
    • @freshcoder 你能控制台result 看看值是多少?可能请求的格式不正确。
    猜你喜欢
    • 2021-07-24
    • 1970-01-01
    • 2019-11-13
    • 2019-07-19
    • 1970-01-01
    • 2020-04-29
    • 2021-01-13
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多