Node-redis: TypeError: لا يمكن قراءة خاصية 'callback' من undefined

تم إنشاؤها على ٤ أبريل ٢٠١٩  ·  4تعليقات  ·  مصدر: NodeRedis/node-redis

تفاصيل رسالة الخطأ:
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)

الكود المصدري لعميل 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'); } }
يحدث هذا الخطأ من حين لآخر ، وليس طوال الوقت. أعتقد أنه ربما يكون هناك خطأ ، ويجب التحقق من command_obj عند التحول من قائمة انتظار الأوامر.

pending-author-input

التعليق الأكثر فائدة

أنا أيضا أتلقى هذا الخطأ بشكل متقطع. في حالتي ، يبدو أنه في بعض الأحيان بعد استدعاء "client.punsubcribe ()" تغمرني هذه الأخطاء حتى أقوم بإعادة تشغيل العملية.

تحرير: يجب أن أضيف أيضًا أنه يوجد عادةً 4 عملاء Redis متزامنين لكل مثيل عقدة ، مضيفان أو مضيفان مختلفان

  • "redis": "2.8.0"
  • العقدة 10
  • "محلل redis": "2.6.0"

تتبع الارتداد متطابق إلى حد ما مع سياسة العمليات ، ولكن من أجل الاكتمال:

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)

ال 4 كومينتر

هل لديك هذا الرمز في؟

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

من الصعب جدا تصحيح هذا. في الواقع لا ينبغي أن يحدث أبدا. يشير هذا إلى أن الحالة لم تعد صحيحة. هل هناك أي طريقة يمكنك الاعتماد عليها في تشغيل هذا الخطأ وهل لديك المزيد من المعلومات بالنسبة لي؟ مثل الحد الأدنى من الشفرة التي تم قصها ، إصدار node_redis وإصدار المحلل اللغوي ، والأوامر التي تستخدمها وأي شيء آخر قد يكون مفيدًا لتصحيح هذا الخطأ.

أنا أيضا أتلقى هذا الخطأ بشكل متقطع. في حالتي ، يبدو أنه في بعض الأحيان بعد استدعاء "client.punsubcribe ()" تغمرني هذه الأخطاء حتى أقوم بإعادة تشغيل العملية.

تحرير: يجب أن أضيف أيضًا أنه يوجد عادةً 4 عملاء Redis متزامنين لكل مثيل عقدة ، مضيفان أو مضيفان مختلفان

  • "redis": "2.8.0"
  • العقدة 10
  • "محلل redis": "2.6.0"

تتبع الارتداد متطابق إلى حد ما مع سياسة العمليات ، ولكن من أجل الاكتمال:

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)

بعد التشغيل في وضع التصحيح ، لاحظت أن هذه الأخطاء تتعقب مع رسائل connection gone from close event (على عكس الأكثر شيوعًا connection gone from end event الذي أراه أثناء إنهاء عملية الخمول العادية من خادم redis)

يحدث هذا أيضًا بشكل متقطع وعندما يكون خادم التطبيق تحت حمولة عالية بشكل ملحوظ من مهمة cron

عقدة redis 3.0.2 14.15.1 ، محلل redis 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)

هناك أيضًا أخطاء AbortErr ذات صلة في نفس الوقت تقريبًا لا تتسبب في تعطل الخادم لأنه تم اكتشافها

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'
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات