Модуль имеет плохой импорт - PullRequest
0 голосов
/ 21 января 2019

При попытке импортировать модуль Date и использовать его в простом файле Elm я получаю следующую ошибку:

-- UNKNOWN IMPORT ---------------------------- app/javascript/CountdownTimer.elm

The CountdownTimer module has a bad import:

    import Date

I cannot find that module! Is there a typo in the module name?

The "source-directories" field of your elm.json tells me to only look in the src
directory, but it is not there. Maybe it is in a package that is not installed
yet?

CountdownTimer - это имя файла и модуля, взятые из здесь , который, кажется, работает нормально, но не для меня.

Я использую Elm 0.19.0 и Rails 6.0.0beta1, что, кажется, не является ограничением, поскольку, если я вхожу в Elm REPL в любом месте и пытаюсь импортировать дату, я сталкиваюсь с тем жеошибка:

> import Date
-- UNKNOWN IMPORT ---------------------------------------------------------- elm

The Elm_Repl module has a bad import:

    import Date

I cannot find that module! Is there a typo in the module name?

When creating a package, all modules must live in the src/ directory.

Мой файл elm.json выглядит так:

{
    "type": "application",
    "source-directories": [
        "src"
    ],
    "elm-version": "0.19.0",
    "dependencies": {
        "direct": {
            "elm/browser": "1.0.1",
            "elm/core": "1.0.2",
            "elm/html": "1.0.0",
            "elm/time": "1.0.0",
            "elm/json": "1.1.2",
            "elm/url": "1.0.0",
            "elm/virtual-dom": "1.0.2"
        },
        "indirect": {
        }
    },
    "test-dependencies": {
        "direct": {},
        "indirect": {}
    }
}

1 Ответ

0 голосов
/ 21 января 2019

Код, который вы пытаетесь использовать, устарел. Date было удалено из core в Elm 0.19, без прямой замены или косвенной замены, которая охватывает точно такую ​​же функциональность, насколько я знаю. elm/time является официальным преемником Date и Time, но он не предлагает разбора строки даты / времени, что вам и нужно.

Старый Date.fromString был просто тонкой оболочкой для API синтаксического анализа JavaScript, и поэтому не очень согласован или четко определен. Следовательно, почему это было удалено. В Elm 0.19 вы должны использовать сторонний пакет, который предлагает более специфические функции, такие как elm-iso8601-date-strings .

Если вы получаете строки ISO 8601, вы можете заменить parseTime на:

import Iso8601
import Time

parseTime : String -> Time.Posix
parseTime string =
    Iso8601.toTime string
        |> Result.withDefault (Time.millisToPosix 0)

Если, однако, то, что вы получаете, не в формате ISO 8601, вам нужно найти другой пакет, который анализирует этот конкретный формат.

...