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
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app?
Looking for hints regarding:
Addi...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
I’ve followed the Phoenix LiveView file upload code here Uploads — Phoenix LiveView v1.0.0-rc.7 and so far everything works just fine wit...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #ai
- #iex
- #graphql
- #elixirconf-us
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










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.