Elm中出现“找不到模块”的错误提示

23

我对Elm还比较新,很有趣的看到一个允许你开发前端的函数式语言。即使我已经按照这里描述的步骤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"
}

这是我的文件树的截图。

elm file tree

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

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

1个回答

28

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 announcementelm-package.json 配置文件缺少 evancz/elm-html 这个包。你可以使用 elm 的包管理器来安装依赖,而不是直接编辑 elm-package.json 文件。
在终端中输入以下命令:
elm package install evancz/elm-html

您还需要安装一些其他缺失的依赖项,这些依赖项是 evancz/elm-html 所需的。运行此命令将更新您的 elm-package.json 文件,并从互联网上获取缺失的软件包并将其安装在标准的 elm-stuff/packages 目录中。
有关 elm-package 工具的更多信息,请访问此处
您可以在package.elm-lang.org上在线浏览 elm 包。侧边栏有一个热门包部分,其中包含此处提到的 evancz/elm-html 包。

1
啊,你比我先回答了。我认为你的回答稍微好一些。你能在 package.elm-lang.org 的侧边栏中加入我提到的流行包吗?那么我的回答就会过时,我可以将其删除。 - Apanatshka
好主意,@Apanatshka。我已经添加了流行包的链接和提及。谢谢! - Chad Gilbert
2
啊哈。我以为Html是核心的一部分。奇怪的是我还没有找到那个链接。它隐藏在“社区包”这里后面,我把它看作是像插件一样的“自定义包”...尽管如此,在这个教程或示例中(它使用在线编辑器),并没有提到HTML不是核心的一部分。 - KarelG
1
@KarelG 从 Elm 0.17 开始,它现在是核心的一部分。=) - Elias Dorneles
这已经过时了。在 Elm 0.17 中,应该使用 elm package install elm-lang/html - therealmarv
1
我已经更新了答案,加入了0.17的信息。感谢提醒,@therealmarv。 - Chad Gilbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接