Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elm "cannot find module"

Tags:

elm

I'm fairly new in Elm. It's interesting to see a functional language which allows you to develop front-end stuff. Now even if I am following the steps described here nicely, I still have problems with modules.

The code is

module Main where

import Html exposing ( Html )
import Signal

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

I have used elm-reactor -a='localhost' to be able to view my output. But I am getting an error, that module 'HTML' cannot be found:

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

(note the double "find" hehe) The fix suggestion didn't help me. Or it could be that I'm not understanding the use of the .json file correctly.

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"
}

Here is a screenshot of my file tree.

elm file tree

Maybe it behaves differently than how Haskell is threatening the modules.

How can I solve this - eh simple? - problem. Or is my elm-package.json just configured incorrectly?

like image 795
KarelG Avatar asked Dec 10 '15 11:12

KarelG


1 Answers

Update for Elm 0.17

In 0.17, the Html package has been moved to elm-lang/html. Run the following command from the terminal to install it:

elm package install elm-lang/html

You should also remove the evancz/elm-html package from elm-package.json because it no longer exists as of 0.17.

For more information about the upgrading from 0.16 to 0.17, please see the 0.17 announcement.

Original Answer for Elm 0.16

Your elm-package.json configuration is missing the evancz/elm-html package, which exposes Html. You can use elm's package manager to install dependencies rather than editing elm-package.json directly.

From the terminal, type the following:

elm package install evancz/elm-html

You will also be prompted to install a few other missing dependencies required by evancz/elm-html. Running this command will update your elm-package.json file as well as pull down the missing packages from the internet and install them in the standard elm-stuff/packages directory.

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

You can browse elm packages online at package.elm-lang.org. The sidebar has a Popular Packages section which contains the evancz/elm-html package mentioned here.

like image 175
Chad Gilbert Avatar answered Nov 11 '22 03:11

Chad Gilbert