doc: clarify require/import complement exclusivity#33832
Closed
Uh oh!
There was an error while loading. Please reload this page.
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.
This PR adds a small doc change to clearly define that
"import"and"require"are always mutually exclusive in exports (if something was not required then it definitely was imported) when loading an ES module.Currently there isn't clear guidance that when defining in "exports":
that it should never be possible to resolve to
./main.js.For example, other tools and bundlers could interpret
new Worker('pkg')to not be animportorrequirepath at all. Or similarly for other mechanisms of loading in future. When we should always define that loading an ES module goes through theimportpath.Otherwise, this leaves a semantic gap where users might find
defaultmatched by some tools in the above example. By narrowing this gap we ensure we can continue to provide predictability between tools.//cc @nodejs/modules-active-members
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes