Type error with global `app.derive` followed by `onError`
bogeychan opened this issue · comments
Bogeychan commented
What version of Elysia.JS is running?
1.1.0
What platform is your computer?
WSL Ubuntu
What steps can reproduce the bug?
import { Elysia } from "elysia";
new Elysia()
.derive({ as: "global" }, () => ({
logger: {
log(msg: string) {},
},
}))
.onError((ctx) => {
ctx.logger?.log("yay");
// ^ Property 'logger' does not exist on type ...
});
What is the expected behavior?
no type error
What do you see instead?
type error (see comment)
Additional information
Everything besides global
works fine.
reported on discord
Bogeychan commented
@SaltyAom, yes, it fixed it but there's a follow up error:
import { Elysia } from "elysia";
export const logger = new Elysia({ name: "logger" }).derive(
{ as: "global" },
() => ({
logger: {
log(msg: string) {
console.log(msg);
},
},
})
);
export const error = new Elysia({ name: "error" })
.use(logger)
.error({
Error,
})
.onError({ as: "global" }, (ctx) => {
ctx.logger.log(ctx.code);
// ^ Property 'logger' does not exist on type ...
});
new Elysia()
.use(error)
.get("/", () => {
throw new Error("whelp");
})
.listen(8080);
The logger
exists at runtime but type error as shown in comment.
Open http://localhost:8080/ in browser
Bogeychan commented
Thanks, works for me