fix(runtime-core): guard prop validator against invalid types to avoid instanceof crash (fix #14041) #14042
+7
−2
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 Description
<test-comp :modelValue="{ type: 'js' }" />, the app throws "Right-hand side of 'instanceof' is not an object" during hot-reload/render in development modeRoot Cause
assertTypeusesvalue instanceof typeeven whentypeis not a constructor/function (e.g., user mistakenly declarestype: 'object',type: 'Object', or nested{ type: String })Change Summary
File: packages/runtime-core/src/componentProps.ts
warn(getInvalidTypeMessage(...))); do not crashBehavior After Change
Development Environment
Production Environment
Reproduction (Pre-fix)
<test-comp :modelValue="{ type: 'js' }" />type: 'object'ortype: { type: String })Validation
With the fix:
Scope and Risk
Related
Notes for App Authors
While the runtime now guards against crashes, component props should still be declared with valid constructors/PropType, e.g.:
with an optional validator.
Summary by CodeRabbit