Elm не может найти модуль

Я довольно новичок в Elm. Интересно увидеть функциональный язык, который позволяет вам разрабатывать интерфейсные вещи. Теперь, даже если я правильно выполняю шаги, описанные здесь, у меня все равно возникают проблемы с модулями.

Код

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

(обратите внимание на двойное «найти», хе-хе) Предложение по исправлению мне не помогло. Или может быть, я неправильно понимаю использование файла .json.

вяз-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
person KarelG    schedule 10.12.2015    source источник


Ответы (1)


Обновление для Elm 0.17

В версии 0.17 пакет HTML был перемещен в elm-lang/html. Запустите следующую команду из терминала, чтобы установить его:

elm package install elm-lang/html

Вы также должны удалить пакет evancz/elm-html из elm-package.json, потому что он больше не существует с версии 0.17.

Дополнительную информацию об обновлении с 0.16 до 0.17 см. в объявлении 0.17.

Исходный ответ для 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.

Дополнительную информацию об инструменте elm-package можно найти здесь.

Пакеты elm можно просмотреть в Интернете по адресу package.elm-lang.org. На боковой панели есть раздел «Популярные пакеты», который содержит упомянутый здесь пакет evancz/elm-html.

person Chad Gilbert    schedule 10.12.2015
comment
ах, ты опередил меня с ответом. Я думаю, что ваш немного лучше. Можете ли вы добавить мое упоминание о популярных пакетах на боковой панели package.elm-lang.org? Тогда мой ответ устареет и я смогу его удалить. - person Apanatshka; 10.12.2015
comment
Хороший вопрос, @Apanatshka. Я добавил ссылку и упоминание популярных пакетов. Спасибо! - person Chad Gilbert; 10.12.2015
comment
Ага. Я думал, что HTML является частью ядра. Странно, что я еще не нашел эту ссылку. Он скрыт за пакетами сообщества здесь, которые я читаю как пользовательские пакеты, такие как плагины... HTML ни одна часть ядра не упоминалась где-то в этом руководстве или в примерах (это использует онлайн-редактор). - person KarelG; 10.12.2015
comment
@KarelG Начиная с версии Elm 0.17, он стал частью ядра. знак равно - person Elias Dorneles; 15.05.2016
comment
это устарело. С Elm 0.17 это будет elm package install elm-lang/html - person therealmarv; 24.05.2016
comment
Я обновил ответ информацией 0,17. Спасибо за напоминание, @therealmarv - person Chad Gilbert; 24.05.2016