我找不到模块 "Widget"
I cannot find module "Widget"
我一直在关注网站上的 Elm 教程,我在 Mac 上尝试过它并且它有效,但是当我将它移植到 Linux 时,它给了我以下错误:
- I cannot find module 'Widget'.
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
这是正在使用的代码:
main.elm
module Main exposing (..)
import Html exposing (Html)
import Html.App
import Widget
-- MODEL
type alias AppModel =
{ widgetModel : Widget.Model
}
initialModel : AppModel
initialModel =
{ widgetModel = Widget.initialModel
}
init : ( AppModel, Cmd Msg )
init =
( initialModel, Cmd.none )
-- MESSAGES
type Msg
= WidgetMsg Widget.Msg
-- VIEW
view : AppModel -> Html Msg
view model =
Html.div []
[ Html.App.map WidgetMsg (Widget.view model.widgetModel)
]
-- UPDATE
update : Msg -> AppModel -> ( AppModel, Cmd Msg )
update message model =
case message of
WidgetMsg subMsg ->
let
( updatedWidgetModel, widgetCmd ) =
Widget.update subMsg model.widgetModel
in
( { model | widgetModel = updatedWidgetModel }, Cmd.map WidgetMsg widgetCmd )
-- SUBSCIPTIONS
subscriptions : AppModel -> Sub Msg
subscriptions model =
Sub.none
-- APP
main : Program Never
main =
Html.App.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
widget.elm
module Widget exposing (..)
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
-- MODEL
type alias Model =
{ count : Int
}
initialModel : Model
initialModel =
{ count = 0
}
-- MESSAGES
type Msg
= Increase
-- VIEW
view : Model -> Html Msg
view model =
div []
[ div [] [ text (toString model.count) ]
, button [ onClick Increase ] [ text "Click" ]
]
-- UPDATE
update : Msg -> Model -> ( Model, Cmd Msg )
update message model =
case message of
Increase ->
( { model | count = model.count + 1 }, Cmd.none )
关于如何解决这个问题的任何提示?
因为 Linux 文件系统区分大小写,您应该使用与它们声明的模块相同的大小写命名您的 Elm 文件。
所以在你的情况下:
Main
模块应该在 "Main.elm".
Widget
模块应该在 "Widget.elm".
我一直在关注网站上的 Elm 教程,我在 Mac 上尝试过它并且它有效,但是当我将它移植到 Linux 时,它给了我以下错误:
- I cannot find module 'Widget'.
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
这是正在使用的代码:
main.elm
module Main exposing (..)
import Html exposing (Html)
import Html.App
import Widget
-- MODEL
type alias AppModel =
{ widgetModel : Widget.Model
}
initialModel : AppModel
initialModel =
{ widgetModel = Widget.initialModel
}
init : ( AppModel, Cmd Msg )
init =
( initialModel, Cmd.none )
-- MESSAGES
type Msg
= WidgetMsg Widget.Msg
-- VIEW
view : AppModel -> Html Msg
view model =
Html.div []
[ Html.App.map WidgetMsg (Widget.view model.widgetModel)
]
-- UPDATE
update : Msg -> AppModel -> ( AppModel, Cmd Msg )
update message model =
case message of
WidgetMsg subMsg ->
let
( updatedWidgetModel, widgetCmd ) =
Widget.update subMsg model.widgetModel
in
( { model | widgetModel = updatedWidgetModel }, Cmd.map WidgetMsg widgetCmd )
-- SUBSCIPTIONS
subscriptions : AppModel -> Sub Msg
subscriptions model =
Sub.none
-- APP
main : Program Never
main =
Html.App.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
widget.elm
module Widget exposing (..)
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
-- MODEL
type alias Model =
{ count : Int
}
initialModel : Model
initialModel =
{ count = 0
}
-- MESSAGES
type Msg
= Increase
-- VIEW
view : Model -> Html Msg
view model =
div []
[ div [] [ text (toString model.count) ]
, button [ onClick Increase ] [ text "Click" ]
]
-- UPDATE
update : Msg -> Model -> ( Model, Cmd Msg )
update message model =
case message of
Increase ->
( { model | count = model.count + 1 }, Cmd.none )
关于如何解决这个问题的任何提示?
因为 Linux 文件系统区分大小写,您应该使用与它们声明的模块相同的大小写命名您的 Elm 文件。
所以在你的情况下:
Main
模块应该在 "Main.elm".
Widget
模块应该在 "Widget.elm".