I am getting a strange error on my code / repo when trying to run a EmberServer
in http4s
library. I have taken bits from their starter kit and just trying to run the same on my multi-module sbt project repo, rather than running on the sample project http4s
provides as the Learner Starter Kit.
The same code is working on their repo / kit, but failing on my multi-module project. I am using Intellij Idea
. The error is coming on the function <+>
which is for some reason not being recognized.
I have double checked the versions and dependencyTree
for the whole project, all libraries are same and referring to the same version jar in both the project repos. I am confused as to what could be the issue here.
/path/to/package/Http4sLearnerKitServer.scala:26:67
value <+> is not a member of org.http4s.HttpRoutes[F]
Http4sLearnerKitRoutes.helloWorldRoutes[F](helloWorldAlg) <+>
Code:
object Http4sLearnerKitServer {
def run[F[_]: Async: Network]: F[Nothing] = {
for {
client <- EmberClientBuilder.default[F].build
helloWorldAlg = HelloWorld.impl[F]
jokeAlg = Jokes.impl[F](client)
// Combine Service Routes into an HttpApp.
// Can also be done via a Router if you
// want to extract segments not checked
// in the underlying routes.
httpApp = (
Http4sLearnerKitRoutes.helloWorldRoutes[F](helloWorldAlg) <+>
Http4sLearnerKitRoutes.jokeRoutes[F](jokeAlg)
).orNotFound
// With Middlewares in place
finalHttpApp = Logger.httpApp(logHeaders = true, logBody = true)(httpApp)
_ <-
EmberServerBuilder.default[F]
.withHost(ipv4"0.0.0.0")
.withPort(port"8080")
.withHttpApp(finalHttpApp)
.build
} yield ()
}.useForever
}
- I have tried deleting the whole project and getting is again from Github.
- Tried the invalidate caches and restart.
- I tried adding certain libraries like typesafe config and scala logging to the starter / learner project. Added most of the libraries from the multi-module project that were having common jar tree, but still it works in one but doesn’t in the multi-module project repo.
Nothing seems to be working. Is there anything else I can check?