benonymus

benonymus

Different error on dev and production

Hey there,
When I upload a file that is too big, in dev I am getting the phoenix error that looks like this:

Plug.Parsers.RequestTooLargeError at POST/topics/4gvJMZkdbBpN0e65/post_attachment

the request is too large. If you are willing to process larger requests, please give a :length to Plug.Parsers

and has a status of: 413 Request Entity Too Large

but when I deploy the app this error gets swallowed it seems, and just an empty 500 is returned.
in the AWS logs I can see the 413.

How to handle this error to have the same error the same way on both environments?

Most Liked

axelson

axelson

Scenic Core Team

Hmmm, I wonder if that error message could be improved to guide users to the correct fix for their needs. At the very least I believe we can say that when only html is specified in render_errors that only an iolist or binary are valid inputs and other inputs should result in an error message.

OvermindDL1

OvermindDL1

Not the view name but rather what ‘higher up’ in the callstack is calling your render function. In a base error rendrerer there’s very little above it and I’m not sure if the content-type requested by the client is followed or not (since it’s an error and the body shouldn’t be used for data anyway).

You can always return the stacktrace in that function and see what it’s going through, there might be an option? :slight_smile:

Edit: Googled a bit and the Phoenix View documentation shows rendering JSON from a map in an example. So it should work.

That’s for rendering from controllers, not errors though, I’m unsure about error handling.

jola

jola

I’m curious what the content-type is of the response then.

@OvermindDL1 as far as I can tell, the error view is set as a config option on the endpoint (render_errors) where you can specify a list of content types. Generating a fresh phoenix app with no HTML gives you an error view that has this comment

  # If you want to customize a particular status code
  # for a certain format, you may uncomment below.
  # def render("500.json", _assigns) do
  #   %{errors: %{detail: "Internal Server Error"}}
  # end

so I see no reason why returning maps wouldn’t work here either.

In fact, @benonymus, I’m curious what your render_errors config option looks like in config/config.exs, config/dev.exs and config/prod.exs. Maybe you’ve put JSON in one and HTML in another? It should look something like this

render_errors: [view: HelloWeb.ErrorView, accepts: ~w(json)],

Where Next?

Popular in Questions Top

earth10
Hi, I’m just starting to build a side-project with Elixir and Phoenix and doing some basic test with Elixir alone. What strikes me is th...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod -- where is this set? Thanks.
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
RisingFromAshes
I've read in another post that it may be possible with a router helper - but I couldn't find an appropriate one, and tbh, I'm still just ...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Other popular topics Top

marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement