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?
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ónemitWarning
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:
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 comofromEnv
ofromProcess
.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.