Ricerca nel sito web

javascript - Impossibile compilare Typescript: la proprietà send non esiste su s3client


Sto usando la versione 3 dell'AWS SDK per JavaScript in un ambiente TypeScript/Node.js, ma quando lo eseguo con ts-node, segnala di non riuscire a trovare la funzione send sul s3client. Il mio codice:

const client = new S3Client({
  credentialDefaultProvider: this.getCredentialDefaultProvider
  region: "us-west-2",
});
const command = new ListObjectsCommand({
  Bucket: bucket,
  Prefix: prefix,
});
const result = await client.send(command);

L'errore che ricevo quando avvio il mio server è questo:

/server/node_modules/ts-node/src/index.ts:230
  return new TSError(diagnosticText, diagnosticCodes)

TSError: ⨯ Unable to compile TypeScript:
src/controllers/aws.controller.ts(56,37): error TS2339: Property 'send' does not exist on type 'S3Client'.

Questo è fondamentalmente lo stesso dei campioni di codice nella documentazione ufficiale. Ma ho installato i pacchetti corretti (e ho anche cancellato la cartella node_modules e l'ho reinstallata) e il codice in node_modules sembra corretto. Cosa sto facendo di sbagliato?

Per contesto, questo è uno script nodeJS che gira in ts-node in un container docker-compose. Altri codici funzionano bene, incluso un comando per ottenere un signedURL usando lo stesso oggetto client.

Risposta n. 1

Abbiamo ottenuto lo stesso errore con un modulo @aws-sdk\client-s3 fresco (v3.51.0) ma non con il vecchio v3.47.0. Abbiamo effettuato il downgrade del modulo @aws-sdk\client-s3 alla v3.47.0 e le nostre preoccupazioni sono scomparse.