【问题标题】:Yesod devel InternalError - "devel.hs: signal: 15"Yesod devel InternalError - “devel.hs:信号:15”
【发布时间】: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


【解决方案1】:

我终于弄清楚这里发生了什么。

我在开发过程中使用了一个 sqlite 数据库。几个月前尝试解决其他问题时,我将 sqlite 池大小设置为 1,并没有将其设置回来。

这导致一些数据库插入在服务器启动之前阻止了一些事情。这仅在设置新开发数据库期间在开发模式下出现。

将 settings.yml 中的 sqlite poolsize 设置为 10 个固定的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多