【问题标题】:zio-http (ZIO 2.x) application not starting with Scala 3zio-http (ZIO 2.x) 应用程序不是从 Scala 3 开始的
【发布时间】:2022-07-10 19:53:26
【问题描述】:

我有这个简单的应用程序:

import zhttp.http.*
import zhttp.http.Method.GET
import zhttp.service.Server
import zio.*
object HexAppApplication extends ZIOAppDefault {

  // Create HTTP route
  val app: HttpApp[Any, Nothing] = Http.collect[Request] {
    case GET -> !! / "text" => Response.text("Hello World!")
    case GET -> !! / "json" => Response.json("""{"greetings": "Hello World!"}""")
  }

  val program: URIO[Any, ExitCode] = Server.start(8090, app).exitCode

  override def run: URIO[Any, ExitCode] = program

}

服务器立即启动和停止。为什么它不一直启动?

build.sbt

val zioVersion = "2.0.0-RC5"
val zioHttpVersion = "2.0.0-RC6"

libraryDependencies += "dev.zio" %% "zio" % zioVersion
libraryDependencies ++= Seq(
  "dev.zio" %% "zio-test"          % zioVersion % "test",
  "dev.zio" %% "zio-test-sbt"      % zioVersion % "test",
  "dev.zio" %% "zio-test-magnolia" % zioVersion % "test" // optional
)
testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework")

libraryDependencies += "io.d11" %% "zhttp"      % zioHttpVersion
libraryDependencies += "io.d11" %% "zhttp-test" % zioHttpVersion % Test

文档中的示例(针对 Scala 2.x)看起来很相似:

import zio._
import zhttp.http._
import zhttp.service.Server

object HelloWorld extends App {
  val app = Http.collect[Request] {
    case Method.GET -> !! / "text" => Response.text("Hello World!")
  }

  override def run(args: List[String]): URIO[zio.ZEnv, ExitCode] =
    Server.start(8090, app).exitCode
}

【问题讨论】:

  • 我遇到了完全相同的问题,但仍然无法弄清楚原因。查看zio-http代码,可能是因为使用了ZIO 2 Scope但这只是猜测。

标签: scala scala-3 zio zio-http


【解决方案1】:

尝试将zioHttpVersion 更新为“2.0.0-RC7”。这为我解决了问题。

【讨论】:

    【解决方案2】:

    似乎问题在于zio-http 是针对zio 版本v2.0.0-RC6 构建的,因此它还不能用于最终2.0.0 或低于v2.0.0-RC6 [版本] (https://discordapp.com/channels/629491597070827530/819703129267372113/995509195015209000) 的任何内容。对新的最终 zio 版本的支持刚刚合并,所以没有人应该再次遇到这个问题link to github pr/e61972e276f184e22c60f837d7e0fc5da37b7087)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-17
      • 2022-12-01
      • 2019-06-16
      • 2020-10-22
      • 2021-07-21
      • 2021-12-25
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多