Elm浏览器应用程序未显示

Elm浏览器应用程序未显示,elm,Elm,我从中复制了HTML,从中复制了Elm代码。我对Elm代码所做的唯一更改是添加了第一行模块Main exposing(..)。我妈妈在抱怨。然而,当我在浏览器中打开index.html时,我会看到一个空白屏幕,页面标题仍然是“Main”。我做错了什么 这是我的项目结构 new-project elm-stuff src Main.elm elm.json index.html main.js 以下是index.html: <!DOCTYPE HTML>

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

这是我的项目结构

new-project
  elm-stuff
  src
    Main.elm
  elm.json
  index.html
  main.js
以下是index.html:

<!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>
通过@pdamoc编辑每个答案。我正在尝试使用elm live编译和显示elm文件。我在Ubuntu 18.04.5 LTS上,npm版本为6.14.9,节点版本为v8.10.0

我使用elm live获得此错误:

$ 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

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


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

这里有太多的未知项。作为一个起点,您应该研究:1)是否成功加载了
main.js
,2)它是否包含Elm编译器生成的js。并报告你的发现。(项目的部署方式也可能相关,如果问题是
main.js
返回404,则肯定会相关。)@RobinZigmond我可以在浏览器的Sources下看到main.js,它引用了elm。它也符合我在项目中看到的。看起来有什么东西阻止了elm live的启动。也许这是一件好事。不幸的是,我不熟悉这个错误,也许其他人可以提供进一步的信息。您使用的操作系统/节点版本是什么?如果我使用“elm reactor”,它会工作。elm reactor的作用是什么?仅仅在浏览器中打开'index.html'文件是不行的?
elm reactor
不是为应用程序设计的(使用导航的elm应用程序)。值得注意的是,您使用的是不受支持的节点版本(v8 branch于2020年1月停止维护)。如果可能的话,升级到最新的LTS版本(v14)。根据您的建议编辑答案。编辑答案显示我的操作系统、节点和npm的版本信息。升级节点成功了!
$ 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