2015-12-10 24 views
22

Ich bin ziemlich neu in Elm. Es ist interessant, eine funktionale Sprache zu sehen, mit der man Front-End-Sachen entwickeln kann. Nun, auch wenn ich die beschriebenen Schritte here schön befolge, habe ich immer noch Probleme mit Modulen.Elm "kann Modul nicht finden"

Der Code ist

module Main where 

import Html exposing (Html) 
import Signal 

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

I elm-reactor -a='localhost' verwendet haben, um meine Ausgabe anzuzeigen. Aber ich erhalte eine Fehlermeldung, dass das Modul ‚HTML‘ kann nicht gefunden werden:

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 

(beachten Sie die doppelte „finden“ hehe) Der Fix Vorschlag mir nicht helfen. Oder es könnte sein, dass ich die Verwendung der .json-Datei nicht richtig verstehe.

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

Hier ist ein Screenshot von meinem Dateibaum.

elm file tree

Vielleicht verhält es sich anders, als wie Haskell die Module bedroht.

Wie kann ich das lösen - eh einfach? - Problem. Oder ist meine elm-package.json gerade falsch konfiguriert?

Antwort

27

Update für Elm 0,17

In 0.17 wurde das Html-Paket elm-lang/html verschoben. Führen Sie den folgenden Befehl aus dem Terminal zu installieren:

elm package install elm-lang/html 

Sie sollten auch das evancz/elm-html Paket von elm-package.json entfernen, weil es nicht mehr existiert, wie von 0,17.

Weitere Informationen zum Upgrade von 0,16 auf 0,17 finden Sie unter 0.17 announcement.

Original-Antwort für Elm 0,16

Ihre elm-package.json Konfiguration fehlt das evancz/elm-html-Paket, das Html aussetzt. Sie können den Paketmanager von elmn verwenden, um Abhängigkeiten zu installieren, anstatt elm-package.json direkt zu bearbeiten.

Vom Terminal, geben Sie Folgendes:

elm package install evancz/elm-html 

Sie werden auch ein paar andere fehlenden Abhängigkeiten von evancz/elm-html für die Installation aufgefordert. Wenn Sie diesen Befehl ausführen, wird Ihre elm-package.json Datei aktualisiert, die fehlenden Pakete werden aus dem Internet heruntergeladen und im Standardverzeichnis elm-stuff/packages installiert.

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

Sie können Ulme Pakete online unter package.elm-lang.org sehen. Die Seitenleiste enthält einen Abschnitt mit beliebten Paketen, der das hier erwähnte Paket evancz/elm-html enthält.

+1

ah, du schlägst mich zu einer Antwort. Ich denke, deine ist etwas besser. Kannst du meine Erwähnung der beliebten Pakete in der Seitenleiste von package.elm-lang.org hinzufügen? Dann wird meine Antwort obsolet und ich kann sie entfernen. – Apanatshka

+0

Guter Punkt, @ Apanatshka. Ich habe den Link und die Erwähnung von beliebten Paketen hinzugefügt. Vielen Dank! –

+2

Aha. Ich dachte, dass Html ein Teil des Kerns ist. Es ist seltsam, dass ich diesen Link noch nicht gefunden habe. Es ist versteckt hinter "Community-Paketen" [hier] (http://elm-lang.org/docs), die ich als "benutzerdefinierte Pakete" wie Plugins gelesen habe ... Dass das HTML kein Teil des Kerns ist, tat es nicht wurde irgendwo erwähnt in [diesem Tutorial] (https://github.com/evancz/start-app) oder in Beispielen (es verwendet Online-Editor) obwohl. – KarelG

Verwandte Themen