es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problemas al ejecutar Node utilizando Redis como cliente de datos.

Mientras se ejecuta Redis, cuando intento obtener datos, muestra este tipo de errores, ¿qué está mal?

   (node: 12362) Advertencia de rechazo de promesa no controlada: ReferenceError: queueMicrotask no está definido
  in RedisSocket.cork (/home/aathilingam/Desktop/Laravel - Docker/rediscache/node_modules/@node-redis/client/dist/lib/client/socket.js:86:13)
  in Commander._RedisClient_tick (/home/aathilingam/Desktop/Laravel - Docker/rediscache/node_modules/@node-redis/client/dist/lib/client/index.js:410:60)
  en RedisSocket.socket_1.default.on.on.on.on (/home/aathilingam/Desktop/Laravel - Docker/rediscache/node_modules/@node-redis/client/dist/lib/client/index.js:331:86)
  en RedisSocket.emit (events.js:198:13)
  at RedisSocket._RedisSocket_connect (/home/aathilingam/Desktop/Laravel - Docker/rediscache/node_modules/@node-redis/client/dist/lib/client/socket.js:136:10)
  en el proceso._tickCallback (internal/process/next_tick.js:68:7)

(node: 12362) Advertencia de rechazo de promesa no controlada: el rechazo de promesa no controlada se originó ya sea arrojando dentro de una función asíncrona sin un bloque catch, o rechazando una promesa que no se manejó con .catch (). (ID de rechazo: 1)
(node: 12362) [DEP0018] Advertencia de eliminación: las rechazos de promesa no controlados están obsoletos. En el futuro, los rechazos de promesa que no se manejen terminarán el proceso Node.js con un código de salida distinto de cero.

Mi código es para obtener detalles de fotos de un sitio como un json y cuando intento cargarlos en Redis, obtengo el error anterior. Mi código es

const express = require(“express”);
const axios = require(“axios”);
const cors = require(“cors”);
const Redis = require(“redis”);

//const redisClient = Redis.createClient();
const DEFAULT_EXPIRATION = 3600

const app = express ();
app.use (express.urlencoded ({extended: true}));
app.use (cors ());

let redisClient;

(async () => {
redisClient = Redis.createClient ();

redisClient.on (‘error’, (err) => console.log (‘ Redis Client Error’, err));

await redisClient.connect ();

})();

app.get (“/photos&quot ;, async (req, res) => {
const albumId = req.query.albumId;
// redisClient.get(photos?albumId=${albumId},async (error, photos) => {
// if(error) console.error(error)
// if(photos != null){
// console.log("cache hit");
// return res.json(JSON.parse(photos))
// }else {
console.log("cache miss");
const { data } = await axios.get(
“https://jsonplaceholder.typicode.com/photos”,
{params: { albumId }}
)
redisClient.SETEX(‘fotos’, DEFAULT_EXPIRATION, JSON.stringify (datos));
//}
res.json (data);
})
//})

app.get (“/photos/:id&quot ;, async (req, res) => {
const {data} = await axios.get (
`https://jsonplaceholder.typicode.com/photos/${req.params.id}`
)
res.json (datos);
})

console.log (‘ escuchando’);
app.listen (3000);

Si elimino esta línea, funciona pero no puedo hacer nada sin esta línea.
ayúdame con esto.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “ReferenceError: queueMicrotask no está definido” sugiere que la implementación de Promise utilizada por Node.js falta de una función requerida. Este problema puede ocurrir si está utilizando una versión obsoleta de Node.js o si está utilizando un polyfill de Promise que no es compatible con su versión de Node.js.

    Para resolver este problema, puede intentar actualizar su versión de Node.js a la última versión estable. Si está utilizando un polyfill de Promise, intente utilizar una implementación diferente o actualizarla a una versión compatible con su versión de Node.js.

    Además, puede intentar agregar un bloque catch a sus funciones async para manejar cualquier rechazo de Promise no manejado. Esto evitará que se active la advertencia de obsolescencia.

    Por último, asegúrese de haber importado todos los módulos y dependencias requeridos en su código. Es posible que la función faltante esté definida en un módulo que no se ha importado o cargado correctamente.

Comments are closed.