Zio-HTTP(Zio 2.x)应用程序不从Scala 3开始

发布于 2025-01-22 13:36:21 字数 1532 浏览 5 评论 0原文

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

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
}

I have this simple application:

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

}

The server starts and stops right away. Why doesn't it stay started?

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

The sample from the documentation (for Scala 2.x) looks similar:

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
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦妄 2025-01-29 13:36:21

尝试更新Ziohttpversion为“ 2.0.0-rc7”。这为我修复了。

Try updating zioHttpVersion to "2.0.0-RC7". That fixed it for me.

静谧幽蓝 2025-01-29 13:36:21

似乎问题是Zio-Http是根据Zio在版本v2.0.0.0-rc6中构建的,因此最终尚不可用2.0.0也不是以下的任何内容v2.0.0-rc6 [版本]( https://discordapp.com/channels/6294915970827530/8197031292672113/999550919550195015209000 )。对新最终Zio版本的支持仅合并了,因此没有人应该再次遇到此链接到GitHub pr

It seems that the problem was that zio-http was build against zio in version v2.0.0-RC6 so it is not yet usable with final 2.0.0 nor anything below v2.0.0-RC6 [version] (https://discordapp.com/channels/629491597070827530/819703129267372113/995509195015209000). The support for new final zio release has been just merged so no one should run into this again link to github PR

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文