elixir multiple arguments with the pipe operator -
i'm trying load large json file , bind variable, here code failing.....
deps = file.open("../depmap.json") |> io.read(:all) |> jsx.decode
i'm getting
** (functionclauseerror) no function clause matching in :io.request/2 (stdlib) io.erl:556: :io.request({:error, :enoent}, {:get_line, :unicode, ""}) (elixir) lib/io.ex:82: io.do_read_all/2 lib/depchecker.ex:6: (module) (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
what missing here? i'm assuming result of file.open gets passed first arguement io.read(:all) point of failure here , i'm not sure how rectify this.
file.open
returns either {:ok, pid}
or {:error, reason}
. second 1 in cases when fails. here you're getting {:error, :enoent}
meaning file not exist - you'll need figure out what's wrong path there.
you might want use bang version of file.open
in pipeline:
deps = file.open!("../depmap.json") |> io.read(:all) |> jsx.decode
this 1 behaves file.open
, raises exception instead of returning error value. on success though returns pid
representing file, need io.read
call.
Comments
Post a Comment