Node.js未处理的拒绝TypeError:无法读取Javascript中未定义的属性“ 0”

时间:2019-06-07 06:19:08

标签: javascript node.js typeerror

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

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

“未处理的拒绝TypeError:无法读取未定义的属性'0'”

经过大量的google搜索,我发现我的问题是我需要在声明时以某种方式定义变量值,即使该变量在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

如何避免这种情况?

更新

我已经删除了异步和等待表达式 -功能更流畅,但仍然遇到相同的typeError

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

1 个答案:

答案 0 :(得分:0)

您的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//
}