我注意到在处理新的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。更奇怪的是,名为1.0.0的.19的elm / html版本似乎更像是一个名为〜版本5.0.0〜的用于0.18的elm / html软件包的副本,并且它们都具有较新的签名,列出一个清单。查看安装在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个软件包。
我的逻辑是合理的还是有其他解释?它是怎么得到的,也许我做错了什么?这是其中一种工具的已知问题吗?如何为我的项目解决此问题,以便继续前进?
答案 0 :(得分:4)
您似乎对将核心软件包转移到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操作。