Scala:找不到ContextShift [cats.effect.IO]]的隐式值>

问题描述 投票:2回答:1

我刚开始使用scala,想建立与我的数据库的连接。

(我的知识源于https://www.scala-exercises.org/上的scala / doobie教程)

现在是代码:

import doobie._
import doobie.implicits._
import cats.effect._
import cats.implicits._
import doobie.hikari._

...
val transactor: Resource[IO, HikariTransactor[IO]] =
    for {
      ce <- ExecutionContexts.fixedThreadPool[IO](32)         // our connect EC
      be <- Blocker[IO]                                       // our blocking EC
      xa <- HikariTransactor.newHikariTransactor[IO](
        "org.h2.Driver",                                      // driver classname
        "jdbc:mysql://localhost:3306/libraries",              // connect URL
        "root",                                               // username
        "",                                                   // password
        ce,                                                   // await connection here
        be                                                    // execute JDBC operations here
      )
    } yield xa

[当我尝试构建代码时,出现以下错误消息:

错误:(25,53)找不到ContextShift [cats.effect.IO]的隐式值:

  • 从效果库中导入ContextShift [cats.effect.IO]

  • 如果使用IO,请使用cats.effect.IOApp或使用cats.effect.IO.contextShift构建一个xa

现在我有两个问题:

  1. 到底是什么问题?
  2. 我该如何解决?

我刚开始使用scala,想与我的数据库建立连接。 (我的知识来自https://www.scala-exercises.org/上的scala / doobie教程。)现在是代码:import doobie._ ...

scala scala-cats cats-effect
1个回答
1
投票

编译器无法在隐式范围内找到ContextShift[IO]实例的问题,这是某些方法所必需的(不确定到底是哪个方法)。您需要在隐式范围内声明自己的名称,例如

© www.soinside.com 2019 - 2024. All rights reserved.