Node-redis: TypeError: Tidak dapat membaca properti 'panggilan balik' dari undefined

Dibuat pada 4 Apr 2019  ·  4Komentar  ·  Sumber: NodeRedis/node-redis

Rincian pesan kesalahan:
C:\Users\xxxxx\node_modules\redis\index.js:722 if (typeof command_obj.callback === 'function') { ^ TypeError: Cannot read property 'callback' of undefined at normal_reply (C:\Users\xxxxx\node_modules\redis\index.js:722:28) at RedisClient.return_reply (C:\Users\xxxxx\node_modules\redis\index.js:824:9) at JavascriptRedisParser.returnReply (C:\Users\xxxxx\node_modules\redis\index.js:192:18) at JavascriptRedisParser.execute (C:\Users\xxxxx\node_modules\redis-parser\lib\parser.js:574:12) at Socket.<anonymous> (C:\Users\xxxxx\node_modules\redis\index.js:274:27) at Socket.emit (events.js:189:13) at addChunk (_stream_readable.js:284:12) at readableAddChunk (_stream_readable.js:265:11) at Socket.Readable.push (_stream_readable.js:220:10) at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

Kode sumber klien redis:
function normal_reply (self, reply) { var command_obj = self.command_queue.shift(); if (typeof command_obj.callback === 'function') { if (command_obj.command !== 'exec') { reply = self.handle_reply(reply, command_obj.command, command_obj.buffer_args); } command_obj.callback(null, reply); } else { debug('No callback for reply'); } }
Kesalahan ini terjadi sesekali, tidak setiap saat. Saya pikir mungkin ada bug, dan harus memeriksa command_obj ketika beralih dari antrian perintah.

pending-author-input

Komentar yang paling membantu

Saya juga mendapatkan kesalahan ini sesekali. Dalam kasus saya tampaknya kadang-kadang setelah memanggil "client.punsubcribe()" saya dibanjiri dengan kesalahan ini sampai saya memulai kembali prosesnya.

edit: Saya juga harus menambahkan bahwa biasanya ada 4 klien Redis bersamaan per instance node, dua hingga dua host yang berbeda

  • "redis": "2.8.0"
  • simpul 10
  • "redis-parser": "2.6.0"

Traceback kurang lebih identik dengan OP, tetapi untuk kelengkapan:

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/snapshot/stream-node/node_modules/redis/index.js:722:28)
    at RedisClient.return_reply (/snapshot/stream-node/node_modules/redis/index.js:824:9)
    at JavascriptRedisParser.returnReply (/snapshot/stream-node/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/snapshot/stream-node/node_modules/redis-parser/lib/parser.js:574:12)
    at Socket.<anonymous> (/snapshot/stream-node/node_modules/redis/index.js:274:27)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:287:12)
    at readableAddChunk (_stream_readable.js:268:11)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

Semua 4 komentar

Apakah Anda memiliki kode ini?

const redis = require('redis');
require('bluebird').promisifyAll(redis);

Sangat sulit untuk men-debug ini. Ini seharusnya tidak pernah terjadi. Hal ini menunjukkan bahwa keadaan sudah tidak benar lagi. Apakah ada cara yang dapat Anda andalkan untuk memicu kesalahan ini dan apakah Anda memiliki informasi lebih lanjut untuk saya? Seperti potongan kode minimal, versi node_redis dan versi parser, perintah apa yang Anda gunakan dan hal lain yang mungkin berguna untuk men-debug ini.

Saya juga mendapatkan kesalahan ini sesekali. Dalam kasus saya tampaknya kadang-kadang setelah memanggil "client.punsubcribe()" saya dibanjiri dengan kesalahan ini sampai saya memulai kembali prosesnya.

edit: Saya juga harus menambahkan bahwa biasanya ada 4 klien Redis bersamaan per instance node, dua hingga dua host yang berbeda

  • "redis": "2.8.0"
  • simpul 10
  • "redis-parser": "2.6.0"

Traceback kurang lebih identik dengan OP, tetapi untuk kelengkapan:

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/snapshot/stream-node/node_modules/redis/index.js:722:28)
    at RedisClient.return_reply (/snapshot/stream-node/node_modules/redis/index.js:824:9)
    at JavascriptRedisParser.returnReply (/snapshot/stream-node/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/snapshot/stream-node/node_modules/redis-parser/lib/parser.js:574:12)
    at Socket.<anonymous> (/snapshot/stream-node/node_modules/redis/index.js:274:27)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:287:12)
    at readableAddChunk (_stream_readable.js:268:11)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

Setelah menjalankan mode debug, saya perhatikan bahwa kesalahan ini dilacak dengan pesan connection gone from close event (berlawanan dengan connection gone from end event saya lihat selama penghentian proses idle normal dari server redis)

Itu juga hanya terjadi sebentar-sebentar dan ketika server aplikasi berada di bawah beban yang sangat tinggi dari pekerjaan cron

redis 3.0.2 node 14.15.1, redis-parser 3

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/app/node_modules/redis/index.js:650:28)
    at RedisClient.return_reply (/app/node_modules/redis/index.js:752:9)
    at JavascriptRedisParser.returnReply (/app/node_modules/redis/index.js:137:18)
    at JavascriptRedisParser.execute (/app/node_modules/redis-parser/lib/parser.js:544:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:218:27)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:284:9)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
    at TCP.callbackTrampoline (internal/async_hooks.js:129:14)

Juga ada AbortErrors terkait sekitar waktu yang sama yang tidak membuat server crash karena tertangkap

AbortError: Redis connection lost and command aborted. It might have been processed.
    at RedisClient.flush_and_error (/app/node_modules/redis/index.js:297:23)
    at RedisClient.connection_gone (/app/node_modules/redis/index.js:602:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:226:14)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Object.onceWrapper (events.js:422:26)
    at Socket.emit (events.js:315:20)
    at TCP.<anonymous> (net.js:673:12)
    at TCP.callbackTrampoline (internal/async_hooks.js:129:14)
    at new Command (/app/node_modules/redis/lib/command.js:12:22)
    at RedisClient.info (/app/node_modules/redis/lib/individualCommands.js:169:39)
    at RedisClient.ready_check (/app/node_modules/redis/index.js:469:10)
    at RedisClient.on_connect (/app/node_modules/redis/index.js:363:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:212:14)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Object.onceWrapper (events.js:421:28)
    at Socket.emit (events.js:327:22)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1132:10)
    at TCPConnectWrap.callbackTrampoline (internal/async_hooks.js:129:14)
{
    code: 'UNCERTAIN_STATE',
    command: 'INFO'
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

michaelwittig picture michaelwittig  ·  3Komentar

adamgajzlerowicz picture adamgajzlerowicz  ·  4Komentar

dotSlashLu picture dotSlashLu  ·  5Komentar

Stono picture Stono  ·  6Komentar

lemon707 picture lemon707  ·  3Komentar