Zum Inhalt springen
Deutsch

Installation

actor-ts wird als einzelnes npm-Paket ausgeliefert. Der Kern hat zwei kleine Runtime-Dependencies (ts-pattern für erschöpfendes Matching, fastify für das Default-HTTP-Backend); alles andere — Kafka, Redis, S3, Cassandra, gRPC — ist opt-in über Peer-Dependencies, die Du nur installierst, wenn Du die entsprechende Extension verwendest.

RuntimeMindestversionHinweise
Bun1.3Empfohlen für Entwicklung — schnellster Startup, natives SQLite via bun:sqlite, nativer WebSocket-Server.
Node.js24.0Bringt alles nativ mit: WebSocket-Client, zstd-Kompression, WebCrypto, fetch. SQLite über das eingebaute node:sqlite oder better-sqlite3, wenn du es installierst.
Deno2.2Verwende den npm:-Specifier — import { ... } from 'npm:actor-ts'. Mit --allow-net / --allow-read ausführen, wenn nötig. SQLite braucht Deno 2.2 für node:sqlite; alles andere läuft ab 2.0.

Das Framework erkennt automatisch, unter welcher Runtime es ausgeführt wird, und wählt die richtigen Backends transparent — siehe Runtime Overview für den Erkennungsalgorithmus und die per-Runtime-Vorbehalte.

Terminal-Fenster
bun add actor-ts

Jede Integration wird durch eine Peer-Dep gesperrt — installiere nur die, die Du tatsächlich verwendest. Nichts wird automatisch geladen; die relevante Extension wirft einen klaren “missing peer dep”-Fehler, wenn Du versuchst, sie ohne das installierte Paket zu verwenden.

PaketAktiviert
fastify (Default)Fastify-basiertes HttpServerBackend — beste Bun + Node Performance.
expressExpress-basiertes Backend, für Projekte, die bereits auf Express laufen.
hono + @hono/node-server (nur Node)Hono mit runtime-aware Serve-Primitives — Bun.serve, @hono/node-server, Deno.serve pro Runtime.
Terminal-Fenster
bun add fastify # oder
bun add express # oder
bun add hono @hono/node-server # @hono/node-server ist Node-only
PaketAktiviert
(nichts nötig)SQLite-Journal + Snapshot Store. Jede Runtime hat einen eingebauten Treiber: bun:sqlite auf Bun, node:sqlite auf Node >= 22.13 und Deno >= 2.2.
better-sqlite3 (nur Node, optional)Wird auf Node gegenüber node:sqlite bevorzugt, wenn installiert — etwas schneller, und das, was bestehende Deployments schon einsetzen.
@libsql/clientlibSQL- / Turso-Journal + Snapshot + Durable-State Store — SQLite über HTTP, braucht daher auf keiner Runtime ein natives Binding.
pgPostgreSQL Journal + Snapshot + Durable-State Store.
mariadbMariaDB / MySQL Journal + Snapshot + Durable-State Store.
mssqlMicrosoft SQL Server Journal + Snapshot + Durable-State Store. Reiner JavaScript-Treiber (tedious), kein nativer Build-Schritt.
mongodb (auf ^6 pinnen)MongoDB Journal + Snapshot + Durable-State Store + indizierte Tag-Query. Version 7 lässt sich auf Bun nicht importieren — siehe die MongoDB-Seite.
cassandra-driverCassandra / ScyllaDB Journal + Tag-Index.
@aws-sdk/client-s3S3-kompatibles Object-Storage-Backend (funktioniert mit MinIO, R2, Backblaze B2).
@aws-sdk/client-dynamodbDynamoDB Journal + Snapshot + Durable-State Store.
(nichts nötig)Cloudflare D1 Journal + Snapshot + Durable-State Store — über D1s REST-API mit dem eingebauten HTTP-Client.
fzstd (optional)zstd-Kompression für Object-Storage-Blobs, wenn kein nativer Runtime-Support verfügbar ist.
PaketAktiviert
ioredisRedis-backed Cache.
memjsMemcached-backed Cache.
PaketAktiviert
kafkajsKafkaActor — Producer + Consumer.
mqttMqttActor.
amqplibAmqpActor — RabbitMQ + AMQP-kompatible Broker.
natsNatsActor — inklusive JetStream-Subjects.
@grpc/grpc-js + @grpc/proto-loaderGrpcClientActor + GrpcServerActor.
wsServerseitige WebSocket-Upgrades auf dem Express-Backend. (Der WebsocketClientActor nutzt das native WebSocket der Runtime — keine Peer-Dep.)
@fastify/websocketwebsocket()-Routen auf dem Fastify-Backend.
@hono/node-wswebsocket()-Routen auf dem Hono-Backend (nur Node — Bun/Deno liefern die Helper in hono mit).

KubernetesApiSeedProvider und KubernetesLease benötigen keine Peer-Dependency — beide erreichen die Kubernetes-API über eingebautes node:https + node:fs und verwenden standardmäßig das ServiceAccount-Token im Pod.

PaketAktiviert
@kubernetes/client-node (optional)Nicht erforderlich. Optionaler Austausch für den fetchEndpoints-Hook des KubernetesApiSeedProvider, falls du lieber den offiziellen Client statt des eingebauten HTTPS-Aufrufs verwenden möchtest.

Füge die folgenden Compiler-Optionen in Deiner tsconfig.json hinzu (oder verifiziere sie):

{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "Bundler",
"strict": true,
"noImplicitOverride": true,
"exactOptionalPropertyTypes": true,
"skipLibCheck": true
}
}

Das Framework verlässt sich auf noImplicitOverride, um Lifecycle-Method-Typo-Bugs zu fangen (z. B. onRecieve statt onReceive). Lass es weg, wenn Du es vorziehst, aber Du verlierst dieses Sicherheitsnetz.

Speichere das als verify.ts:

import { Actor, ActorSystem } from 'actor-ts';
class Ping extends Actor<'ping'> {
override onReceive(message: 'ping'): void {
console.log('pong');
}
}
const system = ActorSystem.create('verify');
const ref = system.spawnAnonymous(Ping);
ref.tell('ping');
await new Promise((r) => setTimeout(r, 20));
await system.terminate();
console.log('install OK');
Terminal-Fenster
bun run verify.ts

Erwartete Ausgabe:

pong
install OK

Wenn Du beide Zeilen siehst, funktioniert die Installation. Wenn pong fehlt, ist Deine Runtime unter der Mindestversion (siehe die Tabelle oben auf dieser Seite) — aktualisiere sie und führe erneut aus.

  • Quickstart — fünf Minuten zu einem laufenden Actor.
  • Warum Actors? — die Philosophie hinter dem Framework.
  • Lernpfad — empfohlene Lesereihenfolge basierend auf dem, was Du bauen willst.