используйте node-redis с узлом 8 util.promisify
узел-v: 8.1.2
Я использую Redis client node_redis С узлом 8 util.promisify , не blurbird.
обратный вызов redis.get в порядке, но promisify тип получить сообщение об ошибке
TypeError: не удается прочитать свойство "internal_send_command" undefined
в get (D:Githubredis-testnode_modulesredislibcommands - ... js: 62: 24)
при get (внутренний / util.js: 229: 26)
на D:Githubredis-testapp.js: 23: 27
на объектах. (D:Githubredis-testapp.js: 31: 3)
в модуле._compile (module.js: 569: 30)
на объектах.Модуль._выдвижений..js (module.js: 580: 10)
в модуле.загрузочный модуль.js: 503: 32)
на tryModuleLoad (модуль.js: 466: 12)
на работе.Модуль._загрузочный модуль.js: 458: 3)
на работе.Модуль.runMain (модуль.js: 605: 10)
мой тестовый код
const util = require('util');
var redis = require("redis"),
client = redis.createClient({
host: "192.168.99.100",
port: 32768,
});
let get = util.promisify(client.get);
(async function () {
client.set(["aaa", JSON.stringify({
A: 'a',
B: 'b',
C: "C"
})]);
client.get("aaa", (err, value) => {
console.log(`use callback: ${value}`);
});
try {
let value = await get("aaa");
console.log(`use promisify: ${value}`);
} catch (e) {
console.log(`promisify error:`);
console.log(e);
}
client.quit();
})()
1 ответов
изменение let get = util.promisify(client.get);
to let get = util.promisify(client.get).bind(client);
решил это за меня:)