错误码
v1.0.0-alpha.5 面共有 25 个 OEC 编译器诊断与 3 个运行时错误码。下表每一行都由触发它的源码渲染而成。
适用于 · 更新于
错误码,以及它们被触发的位置。
diagnosticMessage(…)
expected exactly one @element(...) class per compiled module (the decorator must bind the canonical element import from '@openelement/element')
@element option "…" may appear only once
9 条不同消息: @element option "…" may appear only once · @element options must be an object literal · @element options must be named literal assignments · @element options support only root, delegatesFocus and formAssociated · @element requires a string tag name plus an optional options object · @element root "…" is unsupported; use "light", "shadow-open" or "shadow-closed" · @element root must be a string literal · @element tag "…" is not a custom-element name · @element … must be a boolean literal
compiled classes must be named
2 条不同消息: compiled classes must be named · compiled classes must extend the canonical OpenElement import from '@openelement/element' (found ……)
compiled OpenElement classes must carry exactly one @element decorator
6 条不同消息: compiled OpenElement classes must carry exactly one @element decorator · method parameters may not carry decorators in the compiler grammar · methods may not carry decorators in the compiler grammar · unknown decorator on an OpenElement class; use only @element · unknown decorator on an OpenElement member; use only @property · unknown decorator on an OpenElement member; use only @property imported from '@openelement/element'
@property reflect must be a boolean literal
9 条不同消息: @property reflect must be a boolean literal · @property requires one options object literal · compiled @property fields must be ordinary initialized instance fields · compiled classes may declare static styles only once · compiled fields must carry exactly one @property decorator · compiled fields require a literal initializer · duplicate property "…" · property names must be identifiers · static styles requires an initializer
compiled @element classes must be exported (optionally as the default export) without other class modifiers
4 条不同消息: compiled @element classes must be exported (optionally as the default export) without other class modifiers · compiled methods must be concrete instance methods · constructors, accessors and undecorated fields are outside the compiler grammar · method names must be identifiers
compiled classes may declare only one render() method
6 条不同消息: compiled classes may declare only one render() method · compiled classes must declare render() · render() must be a single return of one JSX element · render() must be a synchronous zero-argument method · render() must return a single JSX element · render() must return one intrinsic JSX element
runtime top-level statements are outside the compiled module grammar
component tag <…> is outside the compiler grammar (intrinsic lowercase elements and custom-element hosts only)
4 条不同消息: component tag <…> is outside the compiler grammar (intrinsic lowercase elements and custom-element hosts only) · itemTagReason · list Region item must be an intrinsic lowercase element · tagReason
attribute name "…" is unsafe
14 条不同消息: attribute "…" must be a literal or a supported expression · attribute "…" must be a literal, this.<property>, or a supported expression · attribute "…" only accepts primitive literal values · attribute name "…" is unsafe · duplicate attribute "…" is unsupported · item template attribute "…" must be a static literal or {….<field>} · item template attributes must be static literals · item template attributes must use primitive literals · key is only supported on the list Region item root · list Region items do not support spread attributes · property sink name "…" is unsafe · ref must reference this.<field> · spread attributes are not supported by the compiler grammar · spread attributes are not supported in item templates
Region branches must be fully static
3 条不同消息: Region branches must be fully static · conditional Region branches must be single static JSX elements · nested Regions are outside the compiler grammar
list Region mapper must return one JSX element
12 条不同消息: JSX fragments and spreads are outside the compiler grammar · conditional Regions support this.<property> compared with a numeric literal (>, >=, <, <=), a number/string/boolean equality (===, !==), or a bare this.<property> (optionally negated) truthiness test · dynamic child literals must be primitive values · item child must be {….<field>} · item templates support static text, item values and intrinsic elements · list Region items must bind at least one {<item>.<field>} value or attribute slot · list Region mapper must be a single-parameter arrow function · list Region mapper must return one JSX element · list Regions must map over this.<property> · list Regions support exactly this.<property>.map(...) · unsupported dynamic expression; use this.<property>, a supported condition, or this.<array>.map(...) · void element <…> may not have children
key must be key={<item>.<field>}
4 条不同消息: key must be key={<item>.<field>} · key must reference ….<field> · list Region items may declare key only once · list Region items require key={<item>.<field>}
… part path […] is preceded by a dynamic anchor; path-addressed fixed sinks must appear before any dynamic anchor sibling
event arithmetic supports only numeric += or -= literals
6 条不同消息: event arithmetic supports only numeric += or -= literals · event arrow handlers must contain exactly one supported action · event assignment values must be serializable literals · event handlers must be this.<method> or a single-action arrow · event mutations support only this.<number>++ or -- · unsupported event action; use this.<field>++, assignment or this.<method>()
custom-element host <…> may not carry a ref
3 条不同消息: custom-element host <…> may not carry a ref · custom-element host <…> may not carry event handlers · custom-element host <…> may not have children in the compiler grammar (slots are unsupported)
property defaults must be serializable literals
property type/converter must be one of String, Number, Boolean, Array or Object
@property option "…" may appear only once
3 条不同消息: @property option "…" may appear only once · @property options must be named literal assignments · unsupported @property option "…"
a property with attribute: false cannot reflect
4 条不同消息: a property with attribute: false cannot reflect · duplicate property attribute "…" · property attribute must be a string literal or false · property attribute name is unsafe
computed field arrows may not declare parameters
9 条不同消息: computed field arrows may not declare parameters · computed field arrows may not nest non-arrow functions · computed field arrows may only reference this.<property> · computed field arrows use an expression body, not a block · computed field arrows use an expression body, not a block (keep derived values atomic) · computed field may not read computed field "…" · computed fields may only read this.<declared property> (found this.…) · computed fields take exactly one zero-argument arrow function · event actions may not write computed field "…" — assign its source properties
computed fields require @property({ reflect: false, attribute: false }) — derived signals have no attribute channel
2 条不同消息: computed fields require @property({ reflect: false, attribute: false }) — derived signals have no attribute channel · computed fields require the canonical computed import: a runtime named import of computed from '@openelement/element'…
an innerHTML sink target must be otherwise childless (the sink owns its content)
8 条不同消息: an innerHTML sink target must be otherwise childless (the sink owns its content) · innerHTML sinks require an Object-typed TrustedHtml property · innerHTML sinks require the explicit trustedHtml capability marker · trustedHtml capability marker must be the literal true · trustedHtml capability marker requires an innerHTML sink · trustedHtml field defaults require the canonical trustedHtml import: a runtime named import of trustedHtml from '@openelement/element'… · trustedHtml field defaults require type: Object, reflect: false, and attribute: false · void element <…> cannot carry an innerHTML sink
unsupported @element provenance: …
2 条不同消息: unsupported @element provenance: … · unsupported @property provenance: …