node.js - typescript-fel i redis - vid händelse


import * as redis from 'redis'
import config from '../../config/config'
const client = redis.createClient(config.redis.port, host, config.redis.options);
client.on('ready', () => {
  console.log('redis is ready.')
});

får följande fel i TypeScript

[ts] Egenskapen 'on' finns inte på typen '{ address: any; connection_options: { [x: string]: any; }; connection_id: number; connected: bool...'. any

Svar #1

Först och främst, har du installerat typmodulen för redis-modulen? Jag rekommenderar starkt att göra det eftersom det hjälper TypeScript-kompilatorn och potentiellt din IDE att veta vilka kommandon och gränssnitt som finns tillgängliga i redis-modulen. För att göra det:

npm i --save-dev @types/redis

För det andra, prova att lägga till .on('error', console.error) för att se om din klient skickar några meningsfulla anslutningsfel. Det kan finnas ett problem med dina klientuppgifter, vilket gör att anslutningarna misslyckas.

Slutligen kan du helt hoppa över .on('ready', ...)-händelsehanteraren eftersom den inte är nödvändig. Redis-modulen köar alla kommandon som skickas innan anslutningen är etablerad, och kommer automatiskt att skicka dem när den lyckats ansluta. Du kan helt enkelt börja testa klienten med enkla set och get-kommandon.

Svar #2

Jag stötte på samma problem. Allt verkade vara okej, redis-typerna var installerade (egentligen redan tillhandahållna av redis-paketet).

Men jag glömde helt enkelt att installera nodejs-typerna... Utan dessa typer är TypeScript inte medveten om, bland annat, EventEmitter.

Försök installera:

npm install --save-dev @types/node

Relaterade artiklar