【问题标题】:Elixir with Plug and Cowboy: Disable nice error messages带有 Plug 和 Cowboy 的 Elixir:禁用漂亮的错误消息
【发布时间】:2019-02-10 20:16:06
【问题描述】:

我正在使用heroku-buildpack-elixir 将应用程序部署到 Heroku。我的应用程序包含一个简单的 Plug/Cowboy 设置。我注意到,当发生未处理的异常时,会出现一条很好的错误消息,显示堆栈跟踪和出现错误的代码行。

这对于开发环境来说是可以的,但是在生产环境中我不希望我的代码对访问者可见。如何禁用或覆盖默认行为?

我尝试在 Heroku 中将 MIX_ENV 环境变量设置为 prod 无效。

【问题讨论】:

  • 旁注: 在生产环境中更改 MIX_ENV 没有多大意义,因为一开始甚至没有 mix 应用程序(除非您已明确将其包含在您的release,简而言之,这基本上是错误的。)
  • @mudasobwa 但似乎 Mix.env 具有正确的值(查看接受的答案)。它从哪里获得价值?
  • 在正确答案中,这段代码是编译的。在编译阶段mix 肯定存在并且Mix.env 被定义。在生产中,不再有mix 的踪迹。也就是说,在运行时根本没有无条件,这段代码被编译为 void AST。
  • @mudasobwa 该应用程序是在 Heroku 上编译的,这就是为什么我认为环境变量也会在编译阶段产生影响。

标签: heroku elixir production cowboy plug


【解决方案1】:

将 Plug.Debugger 语句包装在 if 子句中。在 prod 环境中运行不再将错误显示为 html 页面。 source

  if Mix.env == :dev do
    use Plug.Debugger, otp_app: :my_app
  end

【讨论】:

  • 你在使用 Plug.Debugger 吗?没有代码很难找到解决方案....
  • 谢谢 - 将 use Plug.Debugger 包装在 if 子句中,就像 hexdocs.pm/plug/Plug.Debugger.html 的示例中的那样,正是我需要的。您能否将此添加到您的答案中以供未来的读者阅读?
猜你喜欢
  • 2014-09-27
  • 2021-05-17
  • 2020-02-13
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多