榆树包源代码

时间:2017-07-23 20:35:46

标签: elm

我希望看到我的项目中使用的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"

1 个答案:

答案 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