我希望看到我的项目中使用的elm-lang / core的源代码。
我的项目有:
import Json.Decode exposing (..)
现在elm编译器说
Cannot find variable `Json.Decode.Decoder`.
`Json.Decode` does not expose `Decoder`.
从github source我可以看到它暴露Decoder
。想知道我是否有错误的榆树版本。
以防万一 - 我的elm-package.json有
"dependencies": {...
"elm-lang/core": "5.1.1 <= v < 6.0.0",
...
},
"elm-version": "0.18.0 <= v < 0.19.0"
答案 0 :(得分:2)
您在评论中使用的示例显示您正在使用Decoder
,如下所示:
on "load" (Decode.Decoder (toString model.gifUrl)
这确实是一个编译器错误。虽然Json.Decode
包公开了Decoder
类型,但它不会公开Decoder
构造函数。这称为opaque类型,这意味着您无法自己构造Decoder
值,但只能使用Json.Decode
包中的函数。通过使用如下定义的模块可以暴露不透明类型:
module Foo exposing (MyOpaqueType)
您可以通过以下方式之一指定公开的构造函数:
-- only exposes Constructor1 and Constructor2
module Foo exposing (MyType(Constructor1, Constructor2))
-- exposes all constructors of MyType
module Foo exposing (MyType(..))
根据您的示例代码,我推断您在图像完全加载时需要发生一些Msg
。如果是这种情况,那么你可以使用这样的东西:
type Msg
= ...
| ImageLoaded String
viewImage model =
img [ src model.gifUrl, on "load" (Json.Decode.succeed (ImageLoaded model.gifUrl)) ] []
Here is an example of how to handle both the image load
and error
events