scala - Scala、cats、http4s - 无法识别来自 Http4s 的 <+> 符号
问题描述
我创建了两条Http4s
路线:
class FirstRoutes[F[_] : Async](service: FirstService[F]) extends Http4sDsl[F] {
def routes: HttpRoutes[F] = HttpRoutes.of[F] {
//... some code
}
}
class SecondRoutes[F[_] : Async] extends Http4sDsl[F] {
def routes: HttpRoutes[F] = HttpRoutes.of[F] {
//... some code
}
}
现在在我的main
方法中,我想这样称呼这条路线:
override def run(args: List[String]): IO[ExitCode] =
for {
_ <- {
val app = {
//...
val firstRoutes = new FirstRoutes[F](someService)
val secondRoutes = new SecondRoutes[F]
(firstRoutes.routes <+> secondRoutes.routes).orNotFound
}
但是当我编译这段代码时,我得到了一个错误:
Error:(26, 33) value <+> is not a member of org.http4s.HttpRoutes[Server.F]
(firstRoutes.routes <+> secondRoutes.routes).orNotFound
这对我来说很奇怪,因为<+>
当我在路由类上使用 ctrl+space 时我通常可以使用这个符号,而且我有很好的导入:
import cats.effect._
import cats.data._
import org.http4s.server.blaze.BlazeServerBuilder
import cats.effect._
import cats.implicits._
无法找到如何解决此问题并用于<+>
调用路由类。也许是intellij问题?有人能帮我吗?
解决方案
为 build.sbt 添加这个 scala 选项
scalacOptions += "-Ypartial-unification"
推荐阅读
- jhipster - 我的 JDL 文件即使没有错误也无法导入
- python - 如何在 Python 中正确查询 Firestore 数据库
- ruby - 为什么 Ruby 在使用双冒号时不将父模块添加到词法范围以进行持续查找?
- maxima - Maxima中的替代变量
- node.js - 在谷歌云功能中运行节点js导出
- javascript - 在 JS 数组中设置对象参数的问题
- sql-server - SQL 导入具有特定组最早日期的值
- c# - 从 Combobox 获取所选项目并设置标签值
- macos - Apple 安全工具:如何从钥匙串中删除私钥?
- c - 在 VMX 中启用 EPT 导致由于来宾状态而无法进入