improv(tracer): remove require in tracer provider #2557
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Changes
This PR makes a minor change in the Tracer X-Ray SDK provider to avoid using the
require
keyword in our codebase. This will help customers identify where the issue is coming from thanks to a more accurate stack trace that reflects the root cause of the issue.As discussed in the linked issue, the previous implementation hardcoded the
require
keyword in both CJS and ESM builds, which caused a runtime error in ESM customer bundles. This was done under the misguided assumption that the X-Ray SDK monkey patching would not work when importing thehttp
andhttps
modules with theimport
keyword (my bad).With this PR we import the modules with the
import
keyword in our source, and then let the TypeScript build operation decide whether to keep or transpile the import torequire
based on the build config. This results in the ESM build not needing the polyfill** and the CJS one correctly transpiled using therequire
keyword as usual.Note
** After this fix customers wanting to bundle Tracer and AWS X-Ray SDK in their ESM bundles still need to add the polyfill banner. The change only affects where the runtime error is thrown, which is now moved to the X-Ray SDK and not in Powertools for AWS Tracer.
Issue number: #2555
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.