Help Needed with JavaScript-native RPC in Cloudflare Workers

What is the issue or error you’re encountering

I cannot invoke WorkerEntrypoint.

What are the steps to reproduce the issue?

[wrangler.toml]

...
services = [{ binding = "SERVICES", service = "services" }]
...

[index.ts]

import router from './internal/router/router';

export default {
    fetch: router.handle,
};

[internal/types/schema.ts]

import { WorkerEntrypoint, RpcTarget } from "cloudflare:workers";

declare class Worker extends RpcTarget {
    getProgress(): number;
}

declare class Services extends WorkerEntrypoint {
    newWorker(): Worker;
}

export interface Env {
    SERVICES: Service<Services>;
}

[internal/router/router.ts]

import { Router } from "itty-router";
import * as schema from '../types/schema';

const router = Router();

router.get('/progress', async (request: Request, env: schema.Env, ctx: ExecutionContext) => {
    const worker = await env.SERVICES.newWorker();
    const progress = await worker.getProgress();
    return new Response(progress);
});

export default router;
  1. wrangler deploy
  2. wrangler tail
  3. curl mydomain/progress

✘ [ERROR] TypeError: env2.SERVICES.newWorker is not a function

well, compatibility_date :slightly_smiling_face:

did it work on local dev? @hcolde

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.