【问题标题】:Issue with elm/html style attribute package in new 0.19 project新 0.19 项目中 elm/html 样式属性包的问题
【发布时间】:2019-03-16 13:28:11
【问题描述】:

我注意到,在处理新 Elm 0.19 项目中的一些构建错误时,我在运行 elm-make 时开始看到如下错误。

50| [ iframe [ src “https://fakeurl.com”,高度“0”,宽度 "0", 样式 [("display", "none"), ("visibility", "hidden")], 沙盒“”]

这个style 调用产生:

String -> Attribute msg

但列表中所有前面的元素都是:

Attribute msg

提示:列表中的所有内容都必须是相同类型的值。这个 这样您就不会在中途遇到意外的值。混合 单个列表中的不同类型,如所述创建“联合类型” 在:http://guide.elm-lang.org/types/union_types.html

这之后的直接错误说明:

这个参数是一个类型的列表:

List ( String, String )

但是style 需要第一个参数是:

String

据我所知,elm-make 抱怨的那一行中 style 属性的使用似乎是 elm/html 最新版本的预期用法

例如

style [ ( "display", "none" ), ( "visibility", "hidden" ) ]

看起来更深入一点,我似乎安装了 elm/html 1.0.0 包,而 Elm 0.19 的最新版本是 2.0.0。更奇怪的是 .19 的 elm/html 版本称为 1.0.0 似乎更像是 0.18 的 elm/html 包的副本,称为 ~version 5.0.0~ 并且这些都有更新的签名拿一个清单。查看安装在C:\Users\me\AppData\Roaming\elm\0.19.0\package\elm\html\1.0.0\src\Html 下的实际软件包,我确实看到签名是style : String -> String -> Attribute msg,据我了解,这应该只适用于 Elm 0.18 的 elm/html 软件包 1.0.0 版本。基于此,我只能得出结论,我的 elm/0.19.0 包存储库文件夹中有 0.18 个包。

我上面的逻辑是合理的还是有其他解释?它是怎么变成这样的,也许我做错了什么?这是其中一种工具的已知问题吗?如何为我的项目解决这个问题,以便继续前进?

【问题讨论】:

    标签: package elm


    【解决方案1】:

    您似乎对将核心包转移到 Elm 0.19 中的 elm/ 命名空间感到困惑。 elm-lang/ 命名空间中的包适用于 Elm 0.18。 elm/html 的最新版本是 1.0.0,而 elm-lang/html 是 2.0.0。话虽如此,您拥有elm/html 1.0.0 是正确的,style 的正确签名是String -> String -> Attribute msg

    release notes for 0.19 中提到了此特定更改。遗憾的是,该文档中没有其他更改,因此如果您遇到其他问题,请在 Slack 上联系人们。

    【讨论】:

    • 现在仔细查看项目名称空间以了解。从我目前所看到的情况来看,我一定是不小心看到了其他包裹而被甩了。也许是 http 而不是 html,只是不够小心以发现差异。据我所知,Elm 0.19 的最新版本的 elm/html 采用了您描述的签名。所以我可能需要对从 html 到 elm 的结果进行一些手动转换。
    • @jpierson 查看elm-upgrade。它会自动转换Html.Attributes.style 用法。还有很多其他的东西。
    • 哦,看来我可以使用 elm-format --upgrade 自动执行此操作。很高兴我在尝试手动完成之前找到了这个,这是我开始使用的一个 html 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2023-03-26
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多