Improve error messaging when using `<#slot />` in template via `embed_sface/1` macro
还没有人认领这个 Issue。
评估
调研方向
Reproduce the failure by updating test/surface_test_embed_sface.sface with the shown template. Then inspect lib/surface/compiler/eex_engine.ex around build_render_slot_context_expr/3 and the embed_sface expansion path. Done means the misuse produces a clear diagnostic or the documented alternative is clearly surfaced, with the reproduction covered by a test.
由索引模型根据 Issue 内容生成。
描述
Maybe it was because I was programming when I should have been in bed - but I got stumped by this. It took a bit of reflection to realize I needed to use {@inner_content} instead of default slot with embed_sface/1 and .sface templates.
Using <#slot /> here resulted in an ArgumentError like this:
(ArgumentError) errors were found at the given arguments:
* 2nd argument: not a tuple
:erlang.element(1, nil)
(surface 0.11.0) lib/surface/compiler/eex_engine.ex:1214: Surface.Compiler.EExEngine.build_render_slot_context_expr/3
(surface 0.11.0) lib/surface/compiler/eex_engine.ex:194: Surface.Compiler.EExEngine.to_expression/3
(surface 0.11.0) lib/surface/compiler/eex_engine.ex:70: Surface.Compiler.EExEngine.generate_buffer/3
(surface 0.11.0) lib/surface/compiler/eex_engine.ex:35: Surface.Compiler.EExEngine.translate/2
(surface 0.11.0) expanding macro: Surface.embed_sface/1
Some better messaging would help a lot here - or maybe just a clear callout in the docs?
How to reproduce it
Updating the test/surface_test_embed_sface.sface to look like this can reproduce:
<div>embed_sface</div>
<#slot />
The behavior you expected
I expected <#slot /> to work, and the resulting ArgumentError was of little assistance.
Here is a suggestion:
error: Trying to use `<#slot />` in a deadview/template, use `{@innter_content}` instead.
Your Environment
Surface: v0.11.0
LiveView: v019.4
Elixir: v1.15.3
- 主要语言
- Elixir
- 星标
- 2.1k
- 派生
- 146
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
surface-ui/surface 的其他 Issue
-
难度 1/5 1-3 小时 新手友好度 78/100
surface-ui/surface#634 · 1 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
surface-ui/surface#770 ·
-
Website is down未关闭
难度 4/5 3-5 天 新手友好度 35/100
surface-ui/surface#768 · 4 条评论 ·
-
难度 4/5 3-5 天 新手友好度 35/100
surface-ui/surface#762 · 2 条评论 · 1 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 35/100
surface-ui/surface#759 · 1 个 reaction ·
查看 surface-ui/surface 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 72/100
electric-sql/electric#4830 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
Gradle release-date fallback accepts `Last-Modified` from non-2xx responses, so `cooldown` lets brand-new plugin versions through可能已有人在做 @v-robaiken 于 1 天前认领。 未关闭L: java:gradle T: bug 🐞
难度 2/5 1-3 小时 新手友好度 76/100
dependabot/dependabot-core#16547 · 1 个 reaction · 已指派 2 人 ·
维护者通常 1 天内回复
-
github_actions
难度 1/5 1 小时以内 新手友好度 94/100
维护者通常 1 天内回复