fix: importing an optional peer dep should throw an runtime error #20029
+120
−31
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.
Description
Currently
await import('optional-peer-dep')
andrequire('optional-peer-dep')
does not throw an runtime error after bundling with Vite. This is caused by mocking the optional peer dep module (introduced by #9321).Note: This current mocking behavior can be skipped by adding the module to
external
option.While we still need to keep the module mocked for
require
(see comment in the code for details), we can makeawait import('optional-peer-dep')
to throw an runtime error to align with the input behavior (although,import 'optional-peer-dep'
should be an early error, not a runtime error).refs #6007 #9321 vitejs#165 rolldown/rolldown#4051 (comment)