diff --git a/src/cmap/auth/mongodb_aws.ts b/src/cmap/auth/mongodb_aws.ts index 57f0cc1baf..fc7f8bef8f 100644 --- a/src/cmap/auth/mongodb_aws.ts +++ b/src/cmap/auth/mongodb_aws.ts @@ -4,7 +4,7 @@ import * as url from 'url'; import type { Binary, BSONSerializeOptions } from '../../bson'; import * as BSON from '../../bson'; -import { aws4, credentialProvider } from '../../deps'; +import { aws4, getAwsCredentialProvider } from '../../deps'; import { MongoAWSError, MongoCompatibilityError, @@ -198,6 +198,8 @@ function makeTempCredentials(credentials: MongoCredentials, callback: Callback Promise; }; -export let credentialProvider: CredentialProvider | { kModuleError: MongoMissingDependencyError } = - makeErrorModule( - new MongoMissingDependencyError( - 'Optional module `@aws-sdk/credential-providers` not found.' + - ' Please install it to enable getting aws credentials via the official sdk.' - ) - ); - -try { - // Ensure you always wrap an optional require in the try block NODE-3199 - credentialProvider = require('@aws-sdk/credential-providers'); -} catch {} // eslint-disable-line +export function getAwsCredentialProvider(): + | CredentialProvider + | { kModuleError: MongoMissingDependencyError } { + try { + // Ensure you always wrap an optional require in the try block NODE-3199 + const credentialProvider = require('@aws-sdk/credential-providers'); + return credentialProvider; + } catch { + return makeErrorModule( + new MongoMissingDependencyError( + 'Optional module `@aws-sdk/credential-providers` not found.' + + ' Please install it to enable getting aws credentials via the official sdk.' + ) + ); + } +} type SnappyLib = { [PKG_VERSION]: { major: number; minor: number; patch: number };