Skip to content
Effect Days 2026 Get your ticket

NodeHttpServer

7 exports Added in v1.0.0 Source

Constructors

make

Added in v1.0.0 Source

Signature

declare const make: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Net.ListenOptions) => Effect.Effect<Server.HttpServer, ServeError, Scope.Scope>

makeHandler

Added in v1.0.0 Source

Signature

declare const makeHandler: {
<R, E>(httpApp: Default<E, R>): Effect<(nodeRequest: IncomingMessage, nodeResponse: ServerResponse) => void, never, any>;
<R, E, App extends Default<any, any>>(httpApp: Default<E, R>, middleware: Applied<App, E, R>): Effect<(nodeRequest: IncomingMessage, nodeResponse: ServerResponse) => void, never, any>;
}

Layers

layer

Added in v1.0.0 Source

Signature

declare const layer: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Net.ListenOptions) => Layer.Layer<Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext | Server.HttpServer, ServeError>

layerConfig

Added in v1.0.0 Source

Signature

declare const layerConfig: (evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>, options: Config.Config.Wrap<Net.ListenOptions>) => Layer.Layer<Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext | Server.HttpServer, ConfigError.ConfigError | ServeError>

layerContext

Added in v1.0.0 Source

A Layer providing the HttpPlatform, FileSystem, Etag.Generator, and Path services.

The FileSystem service is a no-op implementation, so this layer is only useful for platforms that have no file system.

Signature

declare const layerContext: Layer.Layer<Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext>

layerServer

Added in v1.0.0 Source

Signature

declare const layerServer: (evaluate: LazyArg<Http.Server>, options: Net.ListenOptions) => Layer.Layer<Server.HttpServer, ServeError>

layerTest

Added in v1.0.0 Source

Layer starting a server on a random port and producing an HttpClient with prepended url of the running http server.

Signature

declare const layerTest: Layer.Layer<HttpClient.HttpClient | Server.HttpServer | Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext, ServeError>

Example

import * as assert from "node:assert"
import { HttpClient, HttpRouter, HttpServer } from "@effect/platform"
import { NodeHttpServer } from "@effect/platform-node"
import { Effect } from "effect"
Effect.gen(function*() {
yield* HttpServer.serveEffect(HttpRouter.empty)
const response = yield* HttpClient.get("/")
assert.strictEqual(response.status, 404)
}).pipe(Effect.provide(NodeHttpServer.layerTest))