klo
i have an app app1 which uses ExAws.Lambda.invoke/4. All is well and no compile warnings.
Another app say app2 uses app1 as a dependency. For some reason I get a compile warning: ExAws.Lambda.invoke/4 is undefined (module ExAws.Lambda is not available or is yet to be defined) lib/app2/client.ex:40: App2.Client.get_page/2.
Now in App1, i have aliased
alias ExAws.Lambda and calling the function as such:
function_name
|> Lambda.invoke(
config,
%{},
invocation_type: :request_response
)
|> ex_aws.request()
The warning comes from app2 on a fresh compile but not on subsequent compiles even when forced using the --force option. I also have to remove _build and deps for the warning to show.
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
Hi all,
I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
How do I tell Hologram not to escape HTML when substituting into templates?
{Textile.render(@product.long_description)}
escapes the HTM...
New
I’d like to create a file with 600 permissions (rw-------), but there’s a race condition if I create it and then change the permissions. ...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
When I use Mix.install with a git dependency, using git@github.com:... how do I change the SSH identity used?
I’ve got two Github accoun...
New
Hello all. I have a question as to best practices for code organization when implementing a liveview with a lot of responsibilities.
Sup...
New
Other Trending Topics
Hey there,
I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first.
...
New
Hi everyone :waving_hand:
I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly)
AI dream has many faces, but general...
New
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #code-sync
- #discussion
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #elixirconf-us
- #blog-post
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #elixirconf-eu
- #processes
- #security
- #api
- #forms
- #performance










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
stefanchrobot
What’s happening in
lib/app2/client.ex:40: App2.Client.get_page/2? Ifapp2wants to useExAwsdirectly, it needs to add it to it’s own dependencies.fireproofsocks
It feels like forcing the “parent” app (app2 in this example) to specify this as a dependency is giving the parent too much knowledge about an implementation detail. Or is it expected that when an app depends on other smaller apps, the parent may need to explicitly list the dependencies of its dependencies?
stefanchrobot
The “parent” app needs to add the library as a dependency only if it explicitly calls it. Looking at the error, it seems that this is the case here.
klo
Thanks for the reply. i realized the app1 and app2 might be a bit confusing so lets call one app
fetch(the child app in this case) which usesex_aws_lambdaand “parent” app calledworker.Workerhasex_aws_lambdaalready inside of themix.exs.fetchalso hasex_aws_lambdainside ofmix.exsalso.Workeris also not callingex_aws_lambdadirectly inside of the code. We haveex_aws_lambdainside ofWorkerbecause inside offetchwe describeex_aws_lambdaas an optional dep which gives the “parent” app (worker) in this case to define the depI realized in my example i may have crossed the wires and confused myself.
fireproofsocks
The cause can be if the “child” app has any options in its
mix.exsthat qualify the dependency, e.g.might need to be just:
The
optionalparameter is one of those weird gotchas that in effect makes the child app say “hey parent – your call on what to do here.” In effect, it requires the parent app to be aware of what the child app is doing EVEN IF the parent isn’t directly calling that dependency.klo
yep! the solution was to remove the
optional: trueand all was fine. The warning was gone from the parent app.