首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elm浏览器应用程序不显示

Elm浏览器应用程序不显示
EN

Stack Overflow用户
提问于 2020-11-26 20:19:40
回答 1查看 180关注 0票数 1

我从here复制了HTML语言,从here复制了Elm代码。我对Elm代码所做的唯一更改是添加了第一行模块Main公开(..)。我的IDE在抱怨。然而,当我在浏览器中打开index.html时,我得到一个空白屏幕,页面的标题仍然是"Main“。我做错了什么?

以下是我的项目结构

代码语言:javascript
复制
new-project
  elm-stuff
  src
    Main.elm
  elm.json
  index.html
  main.js

下面是index.html:

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="UTF-8">
  <title>Main</title>
  <script src="main.js"></script>
</head>
<body>
  <script>var app = Elm.Main.init();</script>
</body>
</html>

下面是Main.elm:

代码语言:javascript
复制
module Main exposing (..)

import Browser
import Browser.Navigation as Nav
import Html exposing (..)
import Html.Attributes exposing (..)
import Url



-- MAIN


main : Program () Model Msg
main =
  Browser.application
    { init = init
    , view = view
    , update = update
    , subscriptions = subscriptions
    , onUrlChange = UrlChanged
    , onUrlRequest = LinkClicked
    }



-- MODEL


type alias Model =
  { key : Nav.Key
  , url : Url.Url
  }


init : () -> Url.Url -> Nav.Key -> ( Model, Cmd Msg )
init flags url key =
  ( Model key url, Cmd.none )



-- UPDATE


type Msg
  = LinkClicked Browser.UrlRequest
  | UrlChanged Url.Url


update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
  case msg of
    LinkClicked urlRequest ->
      case urlRequest of
        Browser.Internal url ->
          ( model, Nav.pushUrl model.key (Url.toString url) )

        Browser.External href ->
          ( model, Nav.load href )

    UrlChanged url ->
      ( { model | url = url }
      , Cmd.none
      )



-- SUBSCRIPTIONS


subscriptions : Model -> Sub Msg
subscriptions _ =
  Sub.none



-- VIEW


view : Model -> Browser.Document Msg
view model =
  { title = "URL Interceptor"
  , body =
      [ text "The current URL is: "
      , b [] [ text (Url.toString model.url) ]
      , ul []
          [ viewLink "/home"
          , viewLink "/profile"
          , viewLink "/reviews/the-century-of-the-self"
          , viewLink "/reviews/public-opinion"
          , viewLink "/reviews/shah-of-shahs"
          ]
      ]
  }


viewLink : String -> Html msg
viewLink path =
  li [] [ a [ href path ] [ text path ] ]

通过@pdamoc编辑每个答案。我正在尝试使用elm-live来编译和显示elm文件。我使用的是Ubuntu 18.04.5 LTS,npm版本为6.14.9,node版本为v8.10.0。

我使用elm-live得到这个错误:

代码语言:javascript
复制
$ elm-live src/Main.elm --pushstate
events.js:239
    throw new TypeError('"listener" argument must be a function');
    ^

TypeError: "listener" argument must be a function
    at _addListener (events.js:239:11)
    at Server.addListener (events.js:297:10)
    at new Server (_http_server.js:269:10)
    at Object.createServer (http.js:34:10)
    at model (/usr/local/lib/node_modules/elm-live/lib/src/start.js:259:75)
    at /usr/local/lib/node_modules/elm-live/node_modules/crocks/core/compose.js:8:14
    at settle (/usr/local/lib/node_modules/elm-live/node_modules/crocks/Async/index.js:151:16)
    at /usr/local/lib/node_modules/elm-live/node_modules/crocks/Async/index.js:27:62
    at fork (/usr/local/lib/node_modules/elm-live/node_modules/crocks/Async/index.js:155:20)
    at /usr/local/lib/node_modules/elm-live/node_modules/crocks/Async/index.js:224:16
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-27 21:06:58

您需要一个need服务器,它将在请求的每条路径上为index.html提供服务。最简单的方法是全局安装elm-live,然后像elm-live src/Main.elm --pushstate一样启动它

没有在每个路径上提供index.html服务(假设您使用live-server),如果您导航到内部路径并重新加载,您将得到一个404。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65021952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档