effect icon indicating copy to clipboard operation
effect copied to clipboard

fix(ConfigProvider.fromEnv): use import.meta.env instead of process.env

Open coffeeispower opened this issue 8 months ago • 5 comments

Type

  • [ ] Refactor
  • [X] Feature
  • [ ] Bug Fix
  • [ ] Optimization
  • [ ] Documentation Update

Description

The reason for this is that this allows using environment variables in the browser with vite. Vite has a feature where all environment variables that have a VITE_ prefix are exposed in import.meta.env. And even in node.js, import.meta.env is a alias to process.env so i don't see any reason why ConfigProvider.fromEnv only supported process.env

coffeeispower avatar Apr 13 '25 15:04 coffeeispower

⚠️ No Changeset found

Latest commit: e5d229b53219f1d3459db747ba7d75010fdd01a7

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

changeset-bot[bot] avatar Apr 13 '25 15:04 changeset-bot[bot]

Unfortunately import.meta.env is an es-module only feature, it doesn't work in CJS

mikearnaldi avatar Apr 13 '25 17:04 mikearnaldi

This is a difficult problem because import.meta is a syntax error when running in CJS for some f reason, i think we can do some weird hacks like dynamically importing another file using the import() function which just exports import.meta so it works for both EJS and CJS.

coffeeispower avatar Apr 14 '25 11:04 coffeeispower

This is a difficult problem because import.meta is a syntax error when running in CJS for some f reason, i think we can do some weird hacks like dynamically importing another file using the import() function which just exports import.meta so it works for both EJS and CJS.

in 4.0 we'll be publishing a single ESM module given that now node LTS supports sync loading of ESM modules so it won't be a problem any longer

mikearnaldi avatar Apr 18 '25 13:04 mikearnaldi

Until then, just copy the code and replace it with import.meta.env in userland.

fubhy avatar Apr 18 '25 14:04 fubhy