You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Svelte中使用Stencil组件时slot属性冲突报错问题

解决Svelte接入Stenciljs组件的slot属性冲突问题

你遇到的报错如下:

Element with a slot='...' attribute must be a child of a component or
a descendant of a custom element

可用解决方案

方案1:配置Svelte编译器识别自定义元素(推荐)

直接在Svelte配置文件中添加你的Stencil组件的标签规则,让Svelte将这些标签识别为原生自定义元素,跳过slot校验,原有组件写法不需要做任何改动即可正常运行。
修改svelte.config.js:

export default {
  compilerOptions: {
    // 支持通配符匹配所有你团队开发的Stencil组件前缀
    customElements: ['my-ui-*']
  }
}

方案2:使用{@html}渲染绕开编译校验

如果不想修改全局配置,可以单独把需要传slot的Stencil组件当成HTML字符串插入,Svelte不会对这部分内容做编译校验:

<script>
  const uiImage = `
  <my-ui-image
    slot="image"
    src="/images/image.png"
    shadow-on-image="false"
    alt="image alt"
    title="Image title"
  />
  `
</script>

{@html uiImage}

方案3:使用svelte:element动态渲染

用Svelte内置的动态元素标签渲染Stencil组件,也可以跳过slot校验:

<svelte:element 
  this="my-ui-image"
  slot="image"
  src="/images/image.png"
  shadow-on-image="false"
  alt="image alt"
  title="Image title"
/>

内容的提问来源于stack exchange,提问作者Flowlicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:07