KV Namespace methods break when passed through constructor

Hey everyone, I'm trying to make my KV namespaces accessible in my services using dep injection with tsyringe. Is this something that is known to be unsupported? I found that after injecting the kv namespace the put() and get() methods seemingly blocks execution of anything coming after it, without any errors and no data being set or retrieved. I would prefer for my services to have the kv namespaces available instead of having to pass it from the request handler (hono with trpc) through to my repository class. I have a middleware for Hono set up like this.
export const injectServices = createMiddleware(async (c: Context<{
Bindings: ContextBindings,
Variables: ContextVariables
}, any, {}>, next) => {
const env = validateEnv(c);

container.register('env', { useValue: env });
container.register('tokenStore', { useValue: c.env.TOKEN /* KV Namespace */ })
container.register('vision', GCPVisionService)

// REPOS
c.set('repositories', {
VisionRepository: container.resolve(VisionRepository)
});

await next();
})
export const injectServices = createMiddleware(async (c: Context<{
Bindings: ContextBindings,
Variables: ContextVariables
}, any, {}>, next) => {
const env = validateEnv(c);

container.register('env', { useValue: env });
container.register('tokenStore', { useValue: c.env.TOKEN /* KV Namespace */ })
container.register('vision', GCPVisionService)

// REPOS
c.set('repositories', {
VisionRepository: container.resolve(VisionRepository)
});

await next();
})
3 Replies
mau
mau3mo ago
I didn’t use cloudflare cache…I can share you repo where I implemented this.
Jacob
Jacob3mo ago
I don't think I am using cloudflare cache either? I noticed that as soon as I pass a kv namespace through a constructor the methods on that namespace just seem to not work, regardless of tsyringe or not. But yeah please share 🙂
mau
mau3mo ago
I have sent you code in dm
Want results from more Discord servers?
Add your server