fix: add CJS support to @netlify/runtime-utils to fix ERR_REQUIRE_ESM
#510
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.
Problem
Fixes #437
When using
@netlify/blobsin a CJS serverless function, the deployed function fails at runtime withERR_REQUIRE_ESM:Root Cause
@netlify/blobsis built in both CJS and ESM formatsrequire('@netlify/runtime-utils')statements@netlify/runtime-utilswas configured to export ESM-onlyERR_REQUIRE_ESMwhen trying torequire()an ESM-only module from a CJS contextSolution
Make
@netlify/runtime-utilsdual-format (CJS + ESM) so it can be consumed by both module systems.Changes
packages/runtime-utils/tsup.config.ts: Updated to build bothcjsandesmformatspackages/runtime-utils/package.json: Added proper conditional exports for both formatsFuture Work
When
@netlify/blobsbecomes ESM-only, we can remove CJS support from@netlify/runtime-utilsas well.Testing
✅ CJS build works:
✅ ESM build still works:
✅
@netlify/blobsCJS build loads successfully: