我注意到在处理新的Elm 0.19项目中的一些构建错误时,我开始在运行elm-make时看到以下错误。
50 | [iframe [src“https://fakeurl.com”,height“0”,width“0”,style [(“display”,“none”),(“visibility”,“hidden”)],sandbox“”]
这个
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包的副本,被称为〜版本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个软件包。
我的逻辑是否合理还是有其他解释?怎么会这样,也许我做错了什么?这是其中一个工具的已知问题吗?如何为我的项目解决此问题,以便我可以继续前进?
看起来你对在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上的人进行ping操作。