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.

El cliente AWS S3Client muestra un error: ’emitWarning’ no es una función.

Estoy tratando de crear un S3Client usando el paquete @aws-sdk/client-s3, como se muestra a continuación:

javascript
const { S3Client } = require('@aws-sdk/client-s3')
const client = new S3Client({ region: 'us-east-1' })

Funciona bien localmente, pero cuando subo el código a una función MongoDB Realm junto con la dependencia client-s3, arroja el error: {"message":"'emitWarning' no es una función","name":"TypeError"}

¿Qué podría estar causando este error?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que la función emitWarning no está definida. Esta función es utilizada por algunos paquetes de AWS SDK para emitir advertencias, pero no está disponible en el entorno de MongoDB Realm.

    Una manera de solucionar este problema es cambiar al uso del paquete @aws-sdk/client-s3-v3 en lugar del paquete @aws-sdk/client-s3. El paquete v3 no depende de la función emitWarning y está diseñado para funcionar en una amplia gama de entornos.

    Aquí hay un ejemplo de cómo crear un S3Client usando el paquete v3:

    const { S3Client } = require('@aws-sdk/client-s3-v3');
    const { fromIni } = require('@aws-sdk/credential-provider-ini');
    const region = 'us-east-1';
    
    const client = new S3Client({
      credentials: fromIni(),
      region,
    });
    

    Este código utiliza la función fromIni del paquete @aws-sdk/credential-provider-ini para cargar las credenciales de AWS desde el archivo ~/.aws/credentials en la máquina que ejecuta el código. Alternativamente, se pueden utilizar otros proveedores de credenciales como fromEnv o fromProcess.

    Asegúrese de instalar los paquetes @aws-sdk/client-s3-v3 y @aws-sdk/credential-provider-ini en el entorno de la función de MongoDB Realm.

Comments are closed.