【发布时间】:2020-04-21 14:36:58
【问题描述】:
我有一个 yesod 应用程序,可以在我的主要开发机器(Ubuntu 16.04)上编译和运行良好。 今天我在另一台运行 Ubuntu 18.04 的机器上克隆了 repo。 它编译得很好,但是当我尝试在开发模式下运行时:
stack exec yesod -- devel
它编译但在 localhost:3000 显示“应用程序未构建”页面。当我按下回车键重新编译时,我收到如下错误:
devel.hs: runFakeHandler issue: InternalError "devel.hs: signal: 15"
CallStack (from HasCallStack):
error, called at src/Yesod/Core/Unsafe.hs:24:14 in yesod-core-1.6.14-8UP8zoy9zgT7ImCVVtHxpr:Yesod.Core.Unsafe
Success! Waiting for next file change.
Type help for available commands. Press enter to force a rebuild.
Starting devel application
Devel application launched: http://localhost:3000
Made application.
如您所见,它表示构建成功,并等待更改。 localhost:3000 仍然显示“应用程序未构建”页面。
我试过了:
- 删除并重新安装最新的堆栈、yesod-bin 等。
- 删除 ~/.stack 和 .stack-work 并重新编译所有内容
- 检查是否存在 postgres-dev、sqlite3、zlib1g-dev 等库
谁能给我任何线索,告诉我这个错误意味着什么以及接下来要尝试什么?
系统:
- Ubuntu 18.04 运行内核 4.15.0-72-generic x64
- 堆栈 2.1.3
- yesod-bin 1.6.0.3
- ghc 8.6.4
感谢您的帮助!
更新:基于我尝试过的第一条评论
stack exec -- yesod devel
还有
yesod devel
所有三个调用都在 18.04 机器上导致上述相同的行为和错误,并且所有三个在 16.04 机器上都按预期工作。因此,我不认为这与 yesod 的开发模式如何被调用有关。
最后,当我调用它时,编译的应用程序可以正常工作
stack exec my-app -- settings.yml
所以这似乎是专门针对 yesod 开发的。
【问题讨论】:
-
我不是专家(从未使用过 Yesod 并且对 Stack 来说相对较新),但该输出和命令看起来有点像您试图将 Yesod 本身作为可执行文件运行。根据quickstart guide,该命令应该是
stack exec -- yesod devel,这与您正在运行的命令略有不同。 -
感谢@Robin 的回答。您是正确的,快速入门指南按该顺序有破折号(这对我来说没有意义)。为了确保,我尝试了两种方法。在 18.04 计算机上,我得到了同样的错误。在 16.04 计算机上,它照常成功。 (编辑:为清楚起见)
标签: haskell yesod haskell-stack