榆树 "cannot find module"

Elm "cannot find module"

我是 Elm 的新手。看到一种允许您开发 front-end 东西的函数式语言很有趣。现在,即使我很好地按照 here 中描述的步骤进行操作,我仍然遇到模块问题。

密码是

module Main where

import Html exposing ( Html )
import Signal

main : Signal Html.Html
main = Html.text "This should work."
       |> Signal.constant

我已经使用 elm-reactor -a='localhost' 来查看我的输出。但是我得到一个错误,找不到模块 'HTML':

I cannot find find module 'Html'.

Module 'Main' is trying to import it.

Potential problems could be:
  * Misspelled the module name
  * Need to add a source directory or new dependency to elm-package.json

(注意双"find"呵呵) 修复建议对我没有帮助。或者可能是我没有正确理解 .json 文件的用法。

elm-package.json:

{
    "version": "1.0.0",
    "summary": "testing elm",
    "license": "BSD3",
    "source-directories": [
        ".",
        "./bin/"
    ],
    "exposed-modules": [],
    "dependencies": {
        "elm-lang/core": "3.0.0 <= v < 4.0.0"
    },
    "elm-version": "0.16.0 <= v < 0.17.0"
}

这是我的文件树的屏幕截图。

也许它的行为不同于 Haskell 威胁模块的方式。

我该如何解决这个问题 - 嗯,简单吗? - 问题。 还是我的 elm-package.json 配置不正确?

Elm 0.17 更新

在 0.17 中,Html 包已移至 elm-lang/html。 运行 从终端执行以下命令安装它:

elm package install elm-lang/html

您还应该从 elm-package.json 中删除 evancz/elm-html 包,因为它从 0.17 起不再存在。

有关从 0.16 升级到 0.17 的更多信息,请参阅 0.17 announcement

Elm 0.16 的原始答案

您的 elm-package.json 配置缺少 evancz/elm-html 包,它公开了 Html。您可以使用 elm 的包管理器来安装依赖项,而不是直接编辑 elm-package.json

在终端中输入以下内容:

elm package install evancz/elm-html

系统还会提示您安装 evancz/elm-html 所需的其他一些缺失的依赖项。 运行使用此命令将更新您的 elm-package.json 文件并从互联网上下载丢失的软件包并将它们安装在标准 elm-stuff/packages 目录中。

More info on the elm-package tool can be found here.

您可以在 package.elm-lang.org 在线浏览 elm 包。侧边栏有一个热门包部分,其中包含此处提到的 evancz/elm-html 包。